我对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/