使用mockito测试方法,该方法使用某些其他类

时间:2016-12-28 07:07:26

标签: java unit-testing junit mockito

我有一个从队列接收消息的方法,我需要用Mockito编写这个方法的单元测试。该方法使用实用程序类UtillClass。我很困惑如何为这种方法编写单元测试

public boolean findSomeRecord(Message<?> message){
    Details details = UtilClass.getHeaderValue(Constants.DETAILS, message, Details.class);

    Record record = recordService.findById(details.getDetailsId());

    if(record == null ){
        return false;
    }
    return true;
}

1 个答案:

答案 0 :(得分:1)

答案:取决于

我想你的第一个问题是,静态方法调用UtilClass.getHeaderValue()在单元测试中无法正常运行?

你知道,因为它会起作用......你会关心它吗?含义:您想测试findSomeRecord()返回true或false。因此,在完美设置中,您只能进行两项测试:

assertThat(objectUnderTest.findSomeRecord(someRecordThatCanBeFound), is(true));

RESP。

assertThat(objectUnderTest.findSomeRecord(someRecordThatCanNotBeFound), is(false));

但可能静态方法在单元测试设置中不起作用。那你有两个选择:

  1. 你转向PowerMock(ito);这允许你模拟静态方法
  2. 你改变你的设计;例如,给出以了解这个util方法是 static 方法的想法。因为当您不调用静态方法时,您(几乎)总是可以使用依赖注入为您的生产代码提供一个模拟对象来调用其方法。