java - JMockit:当应该实例化模拟对象时出现空指针错误?

标签 java unit-testing mocking jmockit

我对JMockit的理解是它会用模拟替换模拟对象的所有实例(除非您另有说明)。

因此,我很困惑得到 NPE实例化一个对象后,我试图模拟。

测试的目的不是调查导致 NPE 的对象,但我确实需要模拟它才能执行测试,因为它执行一些数据库操作来验证某些输入。

我的测试代码如下(不是复制意大利面,因为它是工作代码,但仍然应该突出显示问题):

public class ClassToTest{

    public execute(){
       MyDependency myDep = getDependency();

        myDep.doSomething(); //I get a NPE here, implying getDependency returned null 
    }

    protected MyDependency getDependency(){
        return new MyDependency("an Arg", "another Arg");
    }

}

我的测试方法:

@Test
public void testCreateHorseDogMeetingByCodeDataProviderTruncated()
    throws IllegalArgumentException, SQLException,
    IllegalCountryLocationCombo, MEPException {

    // Arrange
    ClassToTest myClass = new ClassToTest();

    new NonStrictExpectations() {

        MyDependency mockDep;

        {
            //Set up my expectations, not related to MyDependency
        }
    };

    // Act
    myClass.execute();

    // Assert
    new Verifications() {
        {
            //some verification stuff
        }
    };
}

任何人都可以帮我解决此 NPE 问题以便我可以完成测试吗?

最佳答案

原来我不小心实例化了 ClassToTest 的子类,它覆盖了 getDependency 的实现并导致出现 null 值。一定是自动完成的事情。

关于java - JMockit:当应该实例化模拟对象时出现空指针错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4759136/

相关文章:

jsf - 如何使用mockito来模拟facescontext?

java - 在 libGdx 中用随机 vector 2填充数组

java - 如何在 s :decorate? 中显示适当的消息(信息或警告)

java - 练习访问修饰符

mocking - 如何在没有嵌入式服务器或新集群的情况下模拟 couchbase 以进行验收测试?

python - 如何测试数据检索模块?

java - Azure OAuth2 : can't validate access token

java - Gradle 覆盖默认检查任务

c++ - 您如何将单元测试引入大型的遗留 (C/C++) 代码库?

node.js - 如何在 Sinon.JS/Node 中调用 fakeServer