所以我一直在使用EasyMock的類擴展。突然我得到這個例外,但只有當我運行整個測試套件:在套件測試期間,EasyMock表示0匹配器預期1記錄
java.lang.IllegalStateException: 0 matchers expected, 1 recorded.
at org.easymock.internal.ExpectedInvocation.createMissingMatchers(ExpectedInvocation.java:42)
at org.easymock.internal.ExpectedInvocation.<init>(ExpectedInvocation.java:34)
at org.easymock.internal.ExpectedInvocation.<init>(ExpectedInvocation.java:26)
at org.easymock.internal.RecordState.invoke(RecordState.java:64)
at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:24)
at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:56)
at org.easymock.classextension.internal.ClassProxyFactory$1.intercept(ClassProxyFactory.java:74)
at com.protrade.soccersim.data.emulator.matrix.PositionCategoryMatrix$$EnhancerByCGLIB$$c5298a7.getPossession(<generated>)
at com.protrade.soccersim.data.emulator.stats.team.PossessionCalculatorUnitTest.testDeterminePossessionHomeWin(PossessionCalculatorUnitTest.java:45)
所涉及的代碼是這個小美女(修剪了一下):
@Before
public void setUp() throws Exception {
homeTeam = createMock(PositionCategoryMatrix.class);
awayTeam = createMock(PositionCategoryMatrix.class);
...
}
@Test
public void testDeterminePossessionHomeWin() {
expect(homeTeam.getPossession()).andReturn(0.15151515);
expect(awayTeam.getPossession()).andReturn(0.01515152);
replay(homeTeam, awayTeam);
...
}
異常正在被拋在第一個期望。它確實沒有道理。它說它獲得了一個匹配器,但該方法甚至沒有爭論。奇怪的是,它只在測試套件期間!我在@Before中創建了一個新的模擬器,所以它不應該從別的地方繼承任何東西(不是說某些其他方法會有匹配器)
那麼,有什麼想法?
我也收到了這個(這個錯誤信息和其他所有類似谷歌搜索結果之間的主要區別在於記錄的數字比預期的數字要大......這表明它不是一個「丟失的匹配器」通過一個常量/匹配器組合)。這是關於EasyMock最簡單的用法 - 我以前從未遇到過這種情況? (我已經在2.5.2和3.0中試過了,結果相似。) – Jared 2010-08-04 15:42:18