我目前有以下测试代码:
public class FakeClass extends MockUp<RealClass>
{
@Mock
public void doSomething() {
...
}
}
void testHandleMetrics() {
FakeClass fakeClass = new FakeClass();
try {
RealClassUser realClassUser = new RealClassUser();
realClassUser.useDoSomethingMethod(); //This calls doSomething
new VerificationInOrder() {
{
fakeClass.doSomething();
}
};
} catch (Exception e) {
fail("FAILED");
}
}
即使我在VerificationsInOrder块中放置了一个失败的组合(即换另一种方法),测试仍然通过。对于Verifications块与假类的使用有什么我不理解的东西吗?
谢谢!
答案 0 :(得分:0)
看起来你错过了嘲笑依赖项中的一些要点:
你的 realClass 如何了解模拟?
此问题通常由依赖注入解决。这意味着你的 realClass 不会实例化Dependency本身,而是从外部注入它,最好是作为构造函数参数。
答案 1 :(得分:0)
AFAIK,可能不涉及验证方法。 FullVerificationInOrder很糟糕。我个人更喜欢期望块(请参阅此处的工作示例:https://github.com/ko5tik/jsonserializer/blob/master/src/test/de/pribluda/android/jsonmarshaller/JSONMarshallerTest.java)
你的测试类如何获取mocjed实例来执行调用?目前,它根本没有使用
我也更喜欢参数的@Mocked注释。
你应该从测试中删除try-catch块 - 这里不需要