使用日志消息编写junit测试用例而不使用mockito

时间:2018-04-26 05:17:19

标签: java spring-boot junit slf4j

我有一个spring boot应用程序,我想为void方法编写一个junit测试用例,所以我只想测试日志是否包含特定的消息。 以下是我的业务逻辑类:

public void processAdjustmentFeed(){

        ............

        if(!CollectionUtils.isEmpty(adjustmentList)){
            log.info("ADJUSTMENT FEED SIZE TO PUBLISH: {}", adjustmentList.size());
            // SOME BUSINESS LOGIC
        } else {
            log.warn("NO ADJUSTMENT FEED FOUND TO PROCESS FROM : {}", lastSuccessfulQueriedTimeStamp);
        }
    }

在我的测试课上:

@RunWith(SpringRunner.class)
@SpringBootTest
public class AdjustmentSchedulerTest {
//
    @Autowired
    private AdjustmentScheduler adjustmentScheduler;

    @Autowired
    private AdjustmentRepository adjustmentRepository;

    @Autowired
    private AdjustmentService adjustmentService;



    @Test
    public void processAdjustmentFeed_ValidAdjustmentList() 
    {

        ....

        adjustmentScheduler.processAdjustmentFeed();

        //HERE I NEED TO CHECK FOR THE LOG MESSAGE
    }
}

如果不使用mockito我怎么能这样做,因为我使用H2数据库,我想用实际方法进行测试。任何人都可以请我提供一些代码示例。

1 个答案:

答案 0 :(得分:0)

您应该专注于测试// SOME BUSINESS LOGIC而不是logger。测试日志使您的测试紧密耦合,您最终测试已测试的记录器代码。这不符合 unit testing principles

无论如何,如果您真的不想使用mockito,您可以随时编写自己的appender日志消息。

See this for example.