【发布时间】:2014-07-22 12:26:37
【问题描述】:
我想测试这个使用匿名类调用接口方法的类。
public class ClassToTest
{
public void methodToTest()
{
InterefaceToMock interefaceToMockReference = new InterefaceToMock() {
@Override
public int methodToMock()
{
return 0;
}
};
interefaceToMockReference.methodToMock();
}
}
这是界面
public interface InterefaceToMock
{
public int methodToMock();
}
我正在使用这个方法来检查是否调用了 methodToMock
import static org.junit.Assert.*;
import org.junit.Test;
import mockit.FullVerificationsInOrder;
import mockit.Mocked;
import mockit.NonStrictExpectations;
public class TestAClass
{
@Mocked InterefaceToMock interefaceToMockReferenceMocked;
@Test
public void test1()
{
new NonStrictExpectations()
{
{
interefaceToMockReferenceMocked.methodToMock();times=1;
}
};
(new ClassToTest()).methodToTest();
new FullVerificationsInOrder(interefaceToMockReferenceMocked)
{
};
assertTrue(true);
}
}
但是测试用例失败了。 谁能帮忙。
【问题讨论】:
-
我不明白这里发生了什么。如果从未传入对实例的引用,
ClassToTest.methodToTest()如何调用InterefaceToMock.methodToMock()? -
它是如何失败的? AssertTrue(true) 永远不会失败。乱七八糟的代码。命名错误。
-
@BoristheSpider 使用匿名类对象调用。
-
@duffymo 验证失败。
-
此处应删除期望记录块或期望验证块,因为在这种情况下您只需要一个。
标签: java unit-testing junit mocking jmockit