运行junit easymock测试时调用意外的方法

时间:2014-08-13 08:37:42

标签: java junit easymock

我想测试这种方法及其条件。

public String getType(String body) {
    String type = getTypeCode(body, 1); //this
    if (null == type) {
        type = getTypeCode(body, 2); //this
    }
    return type;
}

所以我写了一个测试

@Test
public void testTypeOldToNew() {
    Parser parser = createMock(Parser.class);
    expect(parser.getTypeCode(BODY_2, 1)).andReturn(null);
    expect(parser.getTypeCode(BODY_2, 2)).andReturn(CODE_TWO_MESSAGE);
    replay(parser);
    parser.getType(BODY_2);
    verify(parser);
}

但是当我运行它时我遇到了错误

java.lang.AssertionError: 
  Unexpected method call Parser.getype("value"):
    Parser.getTypeCode("value", 1): expected: 1, actual: 0
    Parser.getTypeCode("value", 2): expected: 1, actual: 0

为什么呢?有什么问题?

1 个答案:

答案 0 :(得分:3)

你无法模拟你正在测试的课程。您在模拟上呼叫parser.getType(BODY_2); 。因为你没有为该方法定义任何东西,所以没有任何事情发生(并且定义应该发生的事情没有意义,因为那时你将测试模拟框架)。

您需要模拟此类与其他类(或更好的:接口)的交互。