Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jMock期望中允许对象或null_Java_Junit_Jmock - Fatal编程技术网

Java 在jMock期望中允许对象或null

Java 在jMock期望中允许对象或null,java,junit,jmock,Java,Junit,Jmock,我最近从JMock2.5.1升级到2.6.0,它的一些依赖项似乎已经改变,导致我以前通过的一些测试失败 我的一个测试具有以下期望,用于几个测试的公共设置: oneOf(service.event)(带有(any(Long.class)) 在我的测试套件中,event被调用,同时使用null和有效的Long值。这在JMock2.5.1中曾经是完全可以接受的,但是在升级之后,我得到了以下异常: java.lang.AssertionError: unexpected invocation: serv

我最近从JMock2.5.1升级到2.6.0,它的一些依赖项似乎已经改变,导致我以前通过的一些测试失败

我的一个测试具有以下期望,用于几个测试的公共设置:

oneOf(service.event)(带有(any(Long.class))

在我的测试套件中,
event
被调用,同时使用
null
和有效的
Long
值。这在JMock2.5.1中曾经是完全可以接受的,但是在升级之后,我得到了以下异常:

java.lang.AssertionError: unexpected invocation: service.event(null)
expectations:
  expected once, never invoked: service.event(an instance of java.lang.Long)
what happened before this:
  locator.locateService()
  service.getService()
at org.jmock.api.ExpectationError.unexpected(ExpectationError.java:23)
at org.jmock.internal.InvocationDispatcher.dispatch(InvocationDispatcher.java:85)
at org.jmock.Mockery.dispatch(Mockery.java:231)
at org.jmock.Mockery.access$100(Mockery.java:29)
at org.jmock.Mockery$MockObject.invoke(Mockery.java:271)
at org.jmock.internal.InvocationDiverter.invoke(InvocationDiverter.java:27)
at org.jmock.internal.FakeObjectMethods.invoke(FakeObjectMethods.java:38)
at org.jmock.lib.concurrent.Synchroniser.synchroniseInvocation(Synchroniser.java:82)
at org.jmock.lib.concurrent.Synchroniser.access$000(Synchroniser.java:23)
at org.jmock.lib.concurrent.Synchroniser$1.invoke(Synchroniser.java:74)
at org.jmock.lib.JavaReflectionImposteriser$1.invoke(JavaReflectionImposteriser.java:33)
at com.sun.proxy.$Proxy27.system(Unknown Source)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

我怀疑这可能是因为JMock2.6.0使用了新版本的Hamcrest,但我不确定。有没有更合适的匹配器可以用来为这个方法指定空值和非空值?

在做了更多的研究之后,我从jMock 2.5->2.6了解到这是一个新的匹配器


我发现的解决方法是将
与.is(anything())
一起使用,它匹配空值和非空值。

谢谢,我已经花了太长时间寻找如何做到这一点。对我来说,语法是
(Long)加上(anything())