jmockit验证块抛出缺少1次调用到methodName

时间:2017-07-21 14:50:50

标签: java unit-testing testng jmockit

我试图运行一个将数据更新为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;
        }};

这里我的目的是验证对模拟方法的预期调用[记录在期望中]。但是,验证块正在提供以下异常消息。如果我删除次= 1 ,那么测试用例就会成功。这不是我想要的结果。任何人都可以告诉我在我的测试用例中可能出现的问题。

mockit.internal.MissingInvocation:缺少1次调用: SecondLevelClass #updateDB(creds,data)    带参数:信用证,数据

引起:缺少调用

更新了问题:

updateDatabaseThroughSecondLevelClass(info)有一个参数,从该参数我们在SecondLevelClass中形成信用参考。

Credentials creds = info.getCredentials();

但是在验证块[这是FirstLevelClass 的一部分]中,我们创建了本地测试对象。<​​/ p>

Credentials creds = getCredsTestObject();

这就是它抱怨Missing invocations的原因。因为两个类都是两个不同的引用。任何人都可以建议我如何处理这种情况。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这是TestNG和JMockit之间集成的一个已知问题:https://github.com/jmockit/jmockit1/issues/337