Java org.mockito.Matchers.any()和jmockit出现问题
我有一个UT使用jmockit和mockito 在这个UT中,我有一个字段@Tested TestService TestService testService有一个使用Car作为参数的方法:testService.doTestCar 然后我的UT:testService.doTestanyCar.class 当我调试这个UT时,我发现testService.doTestanyCar.class总是将null传递给doTestcar,如果我想要doTestcar中的Car实例呢 我试过Carany,CaranyObject,但都没用,有什么想法吗 更新: 我有密码:Java org.mockito.Matchers.any()和jmockit出现问题,java,junit,mockito,jmockit,Java,Junit,Mockito,Jmockit,我有一个UT使用jmockit和mockito 在这个UT中,我有一个字段@Tested TestService TestService testService有一个使用Car作为参数的方法:testService.doTestCar 然后我的UT:testService.doTestanyCar.class 当我调试这个UT时,我发现testService.doTestanyCar.class总是将null传递给doTestcar,如果我想要doTestcar中的Car实例呢 我试过Caran
class TestService{
@AutoWired
Dependency dependency;
doTest(Car car){
dependency.doSomeThing(car);
print(car.toString());
}
}
UT代码:
@Injectable Dependency mockDependency;
@Tested TestService testService;
//record
new Expectations() {{
mockDependency.doSomeThing((Car)with(any));
result=detailCar;
}};
//call verify
new Verifications(){{
codeResult=testService.doTest((Car)with(any))
//some codeResult assert
}};
这是所有jmockit版本,我在car.toString上得到NullPointerException
如果我将其更改为:
new Verifications(){{
codeResult=testService.doTest(new Car())
//some codeResult assert
}};
或
我在codeResult=testService.doTest处收到MissingInvocation。。。似乎实例车与任何车都不匹配Mock car=mockCar.class并在doTest中通过此车。希望这会有帮助
此外,如果您正在调用Car的任何方法,请确保您也定义了行为。
例如
mockito的mock不能模拟final类,所以我使用jmockit的'@Mocked',注意,在同一个测试中使用两个不同的mocking API并没有真正意义,因为每个API都有自己的方式来处理每件事。例如,在JMockit中,可以使用any、anyInt、anyString等字段进行参数匹配。另一件事是,anyCar.class、anyString等及其在JMockit中的等价物是记录或验证期望时使用的参数匹配器,而不是其他任何地方。我首先尝试使用所有JMockit,但失败了,我一定是做错了什么。我会更新问题显示更详细的代码。你在使用模拟API时犯了几个错误。我建议花几分钟的时间和你的朋友在一起。
final Car car;
new Verifications(){{
codeResult=testService.doTest(car)
//some codeResult assert
}};
when(car.getName(anyString())).then("bmw");