我试图运行一个将数据更新为DB的测试用例。这是我测试方法的源代码。
@Tested // This is class-level scope as I have different test methods.
FirstLevelClass firstLevelClass;
@Test
public void testUpdateDB(@Mocked SecondLevelClass secondLevelClass) throws Exception {
// Updated method by passing an argument.
firstLevelClass.updateDatabaseThroughSecondLevelClass(info);
new Verifications() {{
SecondLevelClass.updateDB(creds, data);
times =1;
}};
在这里,我的目的是验证对模拟方法的预期调用[记录在期望中]。但是,验证块正在提供以下异常消息。如果我删除times = 1,那么测试用例就会成功。这不是我想要的结果。任何人都可以建议我在我的测试用例中可能出错。
mockit.internal.MissingInvocation:缺少1次调用:SecondLevelClass #readdDB(creds,data)带参数:creds,data
引起:缺少调用
更新的问题:
updateDatabaseThroughSecondLevelClass(info)
有一个参数,从那个参数我们在SecondLevelClass中形成了信用参考。
Credentials creds = info.getCredentials();
但是在验证块[这是FirstLevelClass的一部分]中,我们创建了本地测试对象。
Credentials creds = getCredsTestObject();
这就是为什么它抱怨Missing invocations
的原因。因为两个类都是两个不同的引用。任何人都可以建议我如何处理这种情况。
提前致谢。
这是TestNG和JMockit之间集成的一个已知问题:https://github.com/jmockit/jmockit1/issues/337