JUnit 错误测试和日志记录
JUnit error testing and logging
我正在 JUnit 测试中测试在某些情况下会引发自定义错误,带有 @Test 注释,一切顺利。
@Test(expected = MyCustomException.class)
public void MyTest(){
...
}
但是,在我的代码中,当我遇到这样的错误时,我以这种方式使用记录器 (slf4j):
catch (IllegalArgumentException e) {
LOG.error("My custom exception occured with {}", inputVar, e);
throw new MyCustomException(inputVar, e);
}
到目前为止,行为良好。当我使用 Maven 构建我的应用程序时,所有测试都已完成。
当描述的测试完成后,测试被标记为通过,但我的 shell 中有一个完整的堆栈跟踪,前面有一个很大的错误。
我的问题如下,有没有办法在我 运行 测试时删除日志(因此在 shell 中看不到它)?
第二个问题是:我应该尝试吗?还是我应该只验证所有测试都通过了,而不用担心在构建应用程序时看到堆栈跟踪和错误? (改变我的想法而不是改变代码)
该测试需要堆栈跟踪。因此,记录它是可以的。一切都按预期工作,所以我认为你不应该改变任何东西。特别是你不应该更改任何代码来使测试日志看起来像 "nicer".
更改代码(可能是一些 "isTesting" 标志)只会混淆代码并更改测试和生产之间的行为,而这正是您在进行单元测试时不希望看到的。
我应该注意到,您使用的不是检查异常的最佳方法。我觉得jUnit rule更适合你。因为您将有可能检查异常消息。
我正在 JUnit 测试中测试在某些情况下会引发自定义错误,带有 @Test 注释,一切顺利。
@Test(expected = MyCustomException.class)
public void MyTest(){
...
}
但是,在我的代码中,当我遇到这样的错误时,我以这种方式使用记录器 (slf4j):
catch (IllegalArgumentException e) {
LOG.error("My custom exception occured with {}", inputVar, e);
throw new MyCustomException(inputVar, e);
}
到目前为止,行为良好。当我使用 Maven 构建我的应用程序时,所有测试都已完成。 当描述的测试完成后,测试被标记为通过,但我的 shell 中有一个完整的堆栈跟踪,前面有一个很大的错误。
我的问题如下,有没有办法在我 运行 测试时删除日志(因此在 shell 中看不到它)?
第二个问题是:我应该尝试吗?还是我应该只验证所有测试都通过了,而不用担心在构建应用程序时看到堆栈跟踪和错误? (改变我的想法而不是改变代码)
该测试需要堆栈跟踪。因此,记录它是可以的。一切都按预期工作,所以我认为你不应该改变任何东西。特别是你不应该更改任何代码来使测试日志看起来像 "nicer".
更改代码(可能是一些 "isTesting" 标志)只会混淆代码并更改测试和生产之间的行为,而这正是您在进行单元测试时不希望看到的。
我应该注意到,您使用的不是检查异常的最佳方法。我觉得jUnit rule更适合你。因为您将有可能检查异常消息。