我正在从项目的junit4过渡到junit5,并试图弄清楚如何测试日志。以前,我曾经
@Rule
OutputCapture outputCapture = new OutputCapture();
然后使用
outputCapture.toString()
编写断言,例如assertThat(outputCapture.toString(),containsString("status=200"));
由于在junit5中尚未实现
@Rule
批注,因此我无法使用outputCapture。有什么想法代替吗?谢谢! 最佳答案
我们在JUnit5迁移过程中偶然发现了相同的问题。经过研究,我找到了一种技术解决方案,但似乎还没有人从中获得一个测试库。这就是我所做的。它已发布到Maven Central,因此您可以立即使用它:
https://github.com/netmikey/logunit
您可以按以下方式使用它:
public class MyModuleTest {
@RegisterExtension
LogCapturer logs = LogCapturer.create().captureForType(MyModule.class);
@Test
public void testLogging() {
// ... do the testing ...
// Run assertions on the logged messages
logs.assertContains("Some message");
}
}
(有关更多示例,请参见项目的README)