我正在从项目的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)

09-13 13:00