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

问题描述 投票:0回答:1

我试图运行一个将数据更新为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的原因。因为两个类都是两个不同的引用。任何人都可以建议我如何处理这种情况。

提前致谢。

java unit-testing testng jmockit
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.