与org.mockito.Matchers.any()和jmockit问题

时间:2015-01-14 09:38:28

标签: java junit mockito jmockit

我有一个UT使用jmockit和mockito

在这个UT中,我有一个字段@Tested TestService testService

testService使用 Car 作为参数:testService.doTest(Car car)

然后我的UT:testService.doTest(any(Car.class))

当我调试此UT时,我发现testService.doTest(any(Car.class))总是将 null 传递给doTest(car),如果我想在<{>一个Car的实例,那该怎么办? {1}}?

我尝试了doTest(car)(Car)any(),没有任何帮助,任何想法?

更新 我有代码:

(Car)anyObject()

UT代码:

class TestService{
    @AutoWired
    Dependency dependency;

    doTest(Car car){
        dependency.doSomeThing(car);
        print(car.toString());
    }
}

这是所有jmockit版本,我在@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 }};

获得 NullPointerException

如果我将其更改为:

car.toString()

new Verifications(){{
    codeResult=testService.doTest(new Car())
    //some codeResult assert
}};

我在final Car car; new Verifications(){{ codeResult=testService.doTest(car) //some codeResult assert }}; 看到{strong> MissingInvocation 似乎codeResult=testService.doTest(...)instance car不匹配

1 个答案:

答案 0 :(得分:0)

Mock car = mock(Car.class)并在doTest中传递此car。希望它会有所帮助 此外,如果您正在调用Car的任何方法,请确保您还定义了行为。 例如

when(car.getName(anyString())).then("bmw");