2011-01-05 5 views
2

Ich bekomme diese Ausnahme während der Mock Aufnahmezeit. Ich habe in diesem Forum nach einer Lösung gesucht und dafür gesorgt, dass ich keinen anderen Parameter durcheinander gebracht habe.3 Matcher erwartet, 4 aufgezeichnet

Die folgende Scheinerwartung gibt den Fehler.

EasyMock.expect(slotManager.addSlotPageletBinding(EasyMock.isA(String.class), EasyMock.isA(String.class), EasyMock.isA(helloWorld.class))).andReturn(true); 

Vor dieser Aussage habe ich noch eine falsche Erwartung über die gleiche Methode mit ZWEI Parametern (überladene Methode). Unten ist dieser Schein.

EasyMock.expect(slotManager.addSlotPageletBinding(EasyMock.isA(String.class),EasyMock.isA(String.class))).andReturn(true).anyTimes(); 

Könnte mich jemand auf diesem Weg führen? Vielen Dank.

java.lang.IllegalStateException: 3 matchers expected, 4 recorded. 
    at org.easymock.internal.ExpectedInvocation.createMissingMatchers(ExpectedInvocation.java:56) 
    at org.easymock.internal.ExpectedInvocation.<init>(ExpectedInvocation.java:48) 
    at org.easymock.internal.ExpectedInvocation.<init>(ExpectedInvocation.java:40) 
    at org.easymock.internal.RecordState.invoke(RecordState.java:76) 
    at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:38) 
    at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:72) 
    at org.easymock.classextension.internal.ClassProxyFactory$1.intercept(ClassProxyFactory.java:79) 
    at com.amazon.inca.application.SlotManager$$EnhancerByCGLIB$$3bf5ac02.addSlotPageletBinding(<generated>) 
    at com.amazon.iris3.apps.Iris3YourAccountApplicationTest.testBuildIncaViewConfiguration(Iris3YourAccountApplicationTest.java:107) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at junit.framework.TestCase.runTest(TestCase.java:168) 
    at junit.framework.TestCase.runBare(TestCase.java:134) 
    at junit.framework.TestResult$1.protect(TestResult.java:110) 
    at junit.framework.TestResult.runProtected(TestResult.java:128) 
    at junit.framework.TestResult.run(TestResult.java:113) 
    at junit.framework.TestCase.run(TestCase.java:124) 
    at junit.framework.TestSuite.runTest(TestSuite.java:232) 
    at junit.framework.TestSuite.run(TestSuite.java:227) 
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
+0

http://stackoverflow.com/questions/6550036/easymock-java-lang-illegalstateexception-1-matchers-erwartete-2-aufgezeichnete Erwähnungen, die sicherstellen, dass sie keine Matching-Funktionen erstellen, nachdem sie eine Wiederholung aufgerufen haben, vielleicht? – rogerdpack

Antwort

1

Das Problem ist, dass Sie 3 Erwartungen (Aufrufe) Ihres Mocks aufgezeichnet haben, aber während der Test ausgeführt wird, gab es 4 Aufrufe von Mocks Methoden. Du hast also irgendwo einen Anruf verpasst. Versuchen Sie, den zu testenden Code besser zu lesen und einen fehlenden Anruf zu ermitteln. Oder verwenden Sie Debugger, um es zu entdecken.