Sunday, 15 March 2015

java - Verify alternating calls in Mockito -



java - Verify alternating calls in Mockito -

i working on unit test class uses java 7 watchservice class features. watchservice class provides take() function returns watchkey object next time there alter in directory. watchkey has reset before next time take() called on watchservice.

mockito provides inorder class help sort of thing, doesn't seem play repeated alternation.

my best attempt...

for(int = 1; < 4; i++){ inorder.verify(mockwatcher, atleast(i)).take(); inorder.verify(mockkey, atleast(i)).reset(); } inorder.verify(mockwatcher, times(4)).take(); // lastly take() interrupted before returning

fails error

org.mockito.exceptions.verification.verificationinorderfailure: verification in order failure wanted not invoked: watchkey.reset(); -> @ com.co3.examples.co3directorywatchertest.run_noproblems_performactionscorrectly(co3directorywatchertest.java:273) wanted anywhere after next interaction: watchservice.take(); -> @ com.co3.examples.co3directorywatcher.run(co3directorywatcher.java:78) @ com.co3.examples.co3directorywatchertest.run_noproblems_performactionscorrectly(co3directorywatchertest.java:273) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:45) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:15) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:42) @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:20) @ org.junit.runners.parentrunner.runleaf(parentrunner.java:263) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:68) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:47) @ org.junit.runners.parentrunner$3.run(parentrunner.java:231) @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:60) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:229) @ org.junit.runners.parentrunner.access$000(parentrunner.java:50) @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:222) @ org.junit.runners.parentrunner.run(parentrunner.java:300) @ org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:50) @ org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:38) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:467) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:683) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetestrunner.java:390) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.main(remotetestrunner.java:197)

what canonical way verify behavior?

you might seek making "when" clauses these methods little more complicated, using "answer" callback. in reply callback, can utilize shared info construction records ordering of calls. after execution of cutting complete, can analyze recorded info correctness.

java mockito

No comments:

Post a Comment