我有一系列的类,它们相互调用并传播一个异常。我想在JUnit中编写一个测试,验证异常是在正确的级别捕获的,而不是之前捕获的。
我该怎么做?
例如,如果我有:类A抛出异常类B(称为A)抛出异常类C(称为B)捕获异常
如果有人发现B类异常,我希望测试失败。谢谢
我想您可以使用assertThrows()
检查类B是否总是抛出异常:
@Test
void shouldThrowException() {
Assertions.assertThrows(YourException.class, () -> {
b.executeMethod();
});
}
此外,您可以模拟类A在调用其方法时抛出异常,因此您的测试将检查当A抛出异常时B总是抛出异常
问题内容: 在我的代码中,仅当它在JUnit测试中运行时,才需要进行某些修复。如何确定代码是否在JUnit测试中运行?是否有类似JUnit.isRunning()== true的东西? 问题答案: 如果您要以编程方式确定要运行哪个“配置文件”,则可能是一个好主意。考虑使用Spring Profiles进行配置。在集成测试中,您可能需要针对其他数据库进行测试。 这是经过测试的有效代码
问题内容: 我在JUnit中有许多测试用例。它们都需要相同的代码才能在其静态方法中执行。这是代码重复,我正在努力摆脱它。这样做是一种肮脏的方式。JUnit中是否还有其他机制可能会有所帮助? PS。我写了关于这个主题的博客文章:http : //www.yegor256.com/2015/05/25/unit-test- scaffolding.html 问题答案: 规则是构成可重用代码(而不是从其
问题内容: 我目前正在JAVA中构建一个应用程序,其中只能执行一次。因此,我当前正在使用一个锁定文件,在其中写入当前执行的PID。 因此,只要此应用程序启动,它将打开文件(如果存在)并尝试检测写入文件的PID是否正在实际运行。 这样可以防止我的应用在解锁文件之前崩溃的问题。 我需要它在Windows(XP,7或8)和linux(所有用户都在基于debian的发行版)上工作。 这是一些代码,可以让您
我试图创建一个测试来验证我的代码(见下面的伪代码)是否正确捕获异常。我知道JUnit能够测试代码是否用以下代码抛出异常: 然而,我正在测试的软件的原始代码捕获了这个异常并打印了一条消息 JUnit是否有办法验证此消息?或者我应该改变一下我的流行语? 注:我已阅读,我应使用以下内容: 但是程序崩溃,因为它无法识别对象。 我尝试测试的方法的伪代码(出于隐私原因,不要发布确切的内容):
我在一个类中创建了3个不同的slf4j记录器: 奇怪的是,即使在调试级别配置了X.Y.Z.MyClass,MyClass-a和MyClass-b记录器也不是在调试级别记录日志,而是在配置的根级别记录日志(在我的例子中是info)。如下所示,即使为-a和-b指定特定的记录器也不起作用。在我将根更改为debug之前,它们不会在debug级别进行日志记录。真的被这个难住了,有什么想法吗?
问题内容: Eclipse支持增量编译。如果我保存一个源文件,那么它将编译修改后的文件。 在进行这样的增量编译后,是否还可以运行同一软件包的JUnit测试并在错误视图中显示失败。然后,我可以在同一视图中看到JUnit测试失败并编译错误,而无需执行其他操作。有没有可以做到的插件? 问题答案: 您必须查看以下插件: JUnit Max:不是免费的,由Kent Benk(TDD练习背后的人之一)开发;