def expectError() {
StepVerifier.create(readDB())
.expectError(RuntimeException.class)
.verify();
}
private Mono<String> readDB() {
// try {
return Mono.just(externalService.get())
.onErrorResume(throwable -> Mono.error(throwable));
// } catch (Exception e) {
// return Mono.error(e);
// }
}
如果ExternalService.Get抛出异常而不是返回mono.error,则无法使其工作。总是建议使用try catch转换为mono/flow或者有没有更好的方法来验证这样的抛出异常?
大多数情况下,如果抛出异常的用户提供的代码是作为lambda提供的,则异常可以转换为onerror
。但是在这里,您直接抛入主线程,所以不会发生这种情况
最近,我注意到我的团队在如何在Reactor中编写测试方面遵循了两种方法。第一个方法是借助方法。它看起来是这样的: 第二部分是关于的使用。它看起来是这样的: 以我的拙见,第二种方法看起来更被动。此外,官方文件对此非常清楚: 不过,我还是很好奇,应该鼓励什么样的方式作为Reactor测试的主要途径。是否应该完全放弃方法?若有,是甚么情况? 谢了!
问题内容: 在我的使用Mockito的单元测试中,我想验证未抛出该异常。 我的测试设置了,设置了对象和属性,以便该方法将抛出。 我 确认 从未调用过Calling.method()。 我想要测试失败,因为它抛出,然后我想编写一些代码来解决此问题。 我注意到的是,测试始终会通过,因为永远不会抛出异常。 问题答案: tl; dr JDK8之后:使用 AssertJ 或自定义lambda来声明 异常 行
当我尝试测试此方法时 使用以下测试 也是如此。 是否可以使用AssertJ测试静态方法实际上抛出未检查的异常?我应该在考试中改变什么?
我正在创建一个Spring Boot项目来测试我的rest API(非常非常小的项目)。该项目包含三个文件。 1)app.java(主程序)2)AppConfig(配置文件)3)主控制器(简单Rest控制器) 我添加了Spring-boot-starter-parent(1.4.0.release)和spring-boot-starter-web作为依赖项。 但是在执行时,会得到如下所示的异常。
问题内容: 我有一个包含CrudRepository,实体和控制器的Spring Boot项目。我基本上是在尝试根据传递给控制器的数据来保留实体。 为此,我正在使用。我的实体使用JSR-303批注进行批注, 在 将数据传递给CrudRepository进行持久化 之前, 将在控制器中对其进行检查。 控制器方式: 实体: 我遇到问题的原因是注释。其验证器如下所示: 似乎正在发生的事情是,验证运行
问题内容: 在为Java API编写单元测试时,可能需要在某些情况下执行更详细的异常验证。即比JUnit 提供的 @test 注释所提供的更多。 例如,考虑一个应该从其他接口捕获异常的类,包装该异常并抛出该包装的异常。您可能要验证: 引发包装异常的确切方法调用。 包装异常具有原始异常为其原因。 包装器异常的消息。 这里的要点是希望在单元测试中对异常进行额外的验证(而不是关于是否 应该 验证异常消息