当 lombok 创建日志时,我如何断言我的日志消息

Raf*_*ves 6 java junit lombok

我有以下代码:

@Component
@Slf4j
public class MyClass {

    private OtherClass otherClass;

    @Autowired
    public MyClass(OtherClass otherClass) {
        this.otherClass = otherClass;
    }

    public void start() {
        try {
            otherClass.execute();
        } catch (FeatureException exception) {
            log.warn(exception.getMessage());
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想做测试来验证日志消息。我不知道如何。

谢谢

Oli*_*ire 5

SLF4J项目建议使用该库SLF4J测试这个用例。

在您的情况下(也使用 Hamcrest 和 Mockito):

public class MyClassTest {

  TestLogger logger = TestLoggerFactory.getTestLogger(MyClass.class);

  @Test
  public void testStart_loggingFailureMessage() {
    OtherClass otherClass = mock(OtherClass.class);
    MyClass myClass = new MyClass(otherClass);

    when(otherClass.execute()).thenThrow(new FeatureException("Some text"));

    myClass.start();

    assertThat(logger.getLoggingEvents(), is(asList(LoggingEvent.warn("Some text"))));
  }

  @After
  public void clearLoggers() {
    TestLoggerFactory.clear();
  }
}
Run Code Online (Sandbox Code Playgroud)