Java EasyMock不清楚错误:“不清楚”;预期:1,实际:1“;
我考试不及格Java EasyMock不清楚错误:“不清楚”;预期:1,实际:1“;,java,testing,easymock,Java,Testing,Easymock,我考试不及格 java.lang.AssertionError: Expectation failure on verify: A.logon(null): expected: 1, actual: 1 at org.easymock.internal.MocksControl.verify(MocksControl.java:226) at org.easymock.EasyMock.verify(EasyMock.java:2080) at com.AT
java.lang.AssertionError:
Expectation failure on verify:
A.logon(null): expected: 1, actual: 1
at org.easymock.internal.MocksControl.verify(MocksControl.java:226)
at org.easymock.EasyMock.verify(EasyMock.java:2080)
at com.ATest.test
这个错误意味着什么?为什么会发生?请建议。您看到的只是对两个参数调用的
toString()
方法的结果。因此,事实上,您可能正在执行以下任意组合:
assertEquals(1L,1);
资产质量(“1”,1);
资产质量('1',1);
assertEquals(customObject,1);
我也有类似的错误。结果表明,该方法是在不同的线程上调用的。使方法在同一线程中执行解决了问题。需要更多代码
我们将需要一个明确的答案,所以在这之前,这是我最好的猜测更多的代码
创建一个类的模拟
您在测试中的某个地方使用或模拟了类A
,类似于:
A mockedA = EasyMock.createMock(A.class);
模拟类上的预期行为
因此,在特定测试期间发生的模拟类A
上的所有行为(此处同样缺少代码)都应符合以下要求:
final String someValue = "someValue";
EasyMock.expect(mockedA.logon(EasyMock.isA(String.class))).andReturn(someValue)
我完全在猜测logon
方法的签名,因为我不知道您的A
类实现。在我看来,logon
方法需要一个String
参数(任何类或原语都可以),并返回另一个String
值
匹配
如果要匹配另一个参数,例如类B
的参数,则需要将上述代码更新为:
EasyMock.expect(mockedA.logon(EasyMock.isA(B.class))).andReturn(someValue)
对于返回参数的类型也可以这样说,如果它是C
类型,那么只需为someValue
的最后一个参数实例一个C
类对象即可
不清楚的错误
在某些情况下,错误是非常不清楚的,这一点是有道理的。您正在匹配接受测试中为null
的参数对象的内容
现在,null
可以通过几种方式进行匹配,比如只使用固定的null
值或使用EasyMock.isA(class)
。这很可能就是你测试中出错的地方,在以下实验中:
EasyMock.expect(mockedA.logon(null)).andReturn(someValue)
EasyMock.expect(mockedA.logon(EasyMock.isA(SomeClass.class)).andReturn(someValue)
EasyMock.expect(mockedA.logon(EasyMock.isNull(SomeClass.class)).andReturn(someValue)
EasyMock.expect(mockedA.logon(aVariableHoldingNull)).andReturn(someValue)
EasyMock.expect(mockedA.logon(EasyMock.eq(aVariableHoldingNull)).andReturn(someValue)
EasyMock.expect(mockedA.logon(EasyMock.anyObject(SomeClass.class)).andReturn(someValue)
EasyMock.expect(mockedA.logon(EasyMock.isNull()).andReturn(someValue)
而这份清单还远远不够完整。另外,请务必向我们反馈您的解决方案,以便社区能够从中学习 以下是潜在的解决方案:
您能否共享产生此错误的代码?请显示您的代码<代码>“1”!=1有时甚至
“1”!=“1”
。请验证您在模拟中指定的图形是否与对模拟的调用相同。将有一个对mock的调用,但它可能与您为expect调用提供的确切规范不匹配。我的测试使用了导致该错误的多线程类。请看@uditbansal可能是对的。但是一个代码示例和您收到的完整异常将有助于确认:)另外,如果您预期为null,请不要忘记在预期中使用EasyMock.isNull(MyClass.class)
。您可能会收到一个空对象(不是空MyClass),它会抛出这种类型的错误。