JUnit错误测试和日志记录

gvo*_*gvo 3 java junit slf4j

我正在JUnit测试中测试在某些情况下会引发自定义错误,使用@Test注释,一切顺利.

 @Test(expected = MyCustomException.class)
 public void MyTest(){
    ...
 }
Run Code Online (Sandbox Code Playgroud)

但是,在我的代码中,当我遇到这样的错误时,我会以这样的方式使用记录器(slf4j):

catch (IllegalArgumentException e) {
        LOG.error("My custom exception occured with {}", inputVar, e);
        throw new MyCustomException(inputVar, e);
    }
Run Code Online (Sandbox Code Playgroud)

到目前为止,行为很好.当我使用maven构建我的应用程序时,所有测试都已完成.完成描述的测试后,测试被标记为已通过,但我的shell中有一个完整的堆栈跟踪,前面有一个大错误.

我的问题如下,有没有办法在运行测试时删除日志(因此不在shell中查看)?

第二个问题是:我是否应该尝试?或者我应该只验证所有测试都通过了,并且在构建应用程序时看到堆栈跟踪和错误时不要担心?(改变主意而不是改变代码)

ssi*_*lar 5

堆栈跟踪是该测试的预期.因此,记录它是好的.一切都按预期工作,所以我认为你不应该改变任何东西.特别是你不应该更改任何代码,使测试日志看起来"更好".

更改代码(可能是某些"isTesting"标志)只会混淆代码并改变测试和生产之间的行为,这正是您在进行单元测试时不想要的.