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

时间:2016-11-28 18:57:10

标签: 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());
        }
    }

我想测试验证日志消息。 我不知道怎么做。

由于

2 个答案:

答案 0 :(得分:1)

此用例的SLF4J project recommends usingSLF4J Test

在你的情况下(使用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();
  }
}

答案 1 :(得分:0)

如果其他解决方案不适合您,另一个选择:您可以验证otherClass.execute()抛出的异常

A)看到对getMessage()

的电话

B)被捕获(您可以编写一个抛出运行时异常的测试,您可能会遇到测试用例;以及第二个抛出FeatureException的测试...显然不应该进入测试用例)