EasyMock不清楚错误:“预期:1,实际:1”

问题描述 投票:3回答:4

我失败了测试

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

这个错误意味着什么?为什么会这样?请建议。

java testing easymock
4个回答
3
投票

我有类似的错误。事实证明,该方法是在不同的线程上调用的。使该方法在同一线程中执行解决了该问题。


2
投票

这是潜在的解决方案:

  1. 如果您的代码是多线程的,请尝试How should I unit test threaded code?
  2. 如果您正在使用createStrictMock,您可能希望确保方法调用的顺序正确,否则它可能返回“expected:1,actual:1”或“expected:至少0,actual:1”之类的内容

0
投票

你看到的只是两个参数调用的toString()方法的结果。所以实际上你可能正在做任何组合:

assertEquals(1L, 1);
assertEquals("1", 1);
assertEquals('1', 1);
assertEquals(customObject, 1);

0
投票

需要更多代码

我们需要更多代码来获得明确的答案,所以在这种情况发生之前,这是我最好的猜测。

创建一个类的模拟

你使用APowerMock在你的测试中的某个地方嘲笑EasyMock,类似于:

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类型的实例,则为C最后一个参数的someValue类对象。

不明确的错误

您有一个有效的观点,即在某些情况下错误非常明显。您正在匹配测试中接受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)

这份清单远未完成。另外,请务必使用您的解决方案回复我们,以便社区可以从中学习。

© www.soinside.com 2019 - 2024. All rights reserved.