Hi,
ich probier grad bischen JUnit und EasyMock aus und hab dann mal ein Tutorial Code leicht verändert und dann funktioniert der nicht mehr. Nur ich verstehe nicht wieso. Die testRosyScenario() Methode funktioniert korrekt (ist aus dem Tutorial). Und die testBadScenario() habe ich selbst geschrieben. Da habe ich ein Matcher geändert: eq() durch not() ersetzt und da meckert er mir. Der Code:
Die Exception lautet:
Wieso nimmt der not() nicht als Matcher an? Ich verstehs irgendwie nicht.
Mfg
SebiB90
ich probier grad bischen JUnit und EasyMock aus und hab dann mal ein Tutorial Code leicht verändert und dann funktioniert der nicht mehr. Nur ich verstehe nicht wieso. Die testRosyScenario() Methode funktioniert korrekt (ist aus dem Tutorial). Und die testBadScenario() habe ich selbst geschrieben. Da habe ich ein Matcher geändert: eq() durch not() ersetzt und da meckert er mir. Der Code:
Code:
package unitmock;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;
import java.security.MessageDigest;
import org.junit.Before;
import org.junit.Test;
public class LoginServiceTest {
private LoginService service;
private UserDAO mockDao;
@Before
public void setUp() {
service = new LoginServiceImpl();
mockDao = createStrictMock(UserDAO.class);
service.setUserDAO(mockDao);
}
//Das funktioniert
@Test
public void testRosyScenario() throws Exception {
User results = new User();
String userName = "testUserName";
String password = "testPassword";
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(password.getBytes());
String passwordHash = new String(md5.digest());
expect(
mockDao.loadByUsernameAndPassword(eq(userName),
eq(passwordHash))).andReturn(results);
replay(mockDao);
assertTrue(service.login(userName, password));
verify(mockDao);
}
//Das komischer weise nicht
@Test
public void testBadScenario() throws Exception {
String userName = "testUserName";
String password = "testPassword";
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(password.getBytes());
String passwordHash = new String(md5.digest());
expect(
mockDao.loadByUsernameAndPassword(eq(userName),
not(passwordHash))).andReturn(null);
replay(mockDao);
assertFalse(service.login(userName, "wrongPassword"));
verify(mockDao);
}
}
Die Exception lautet:
Code:
java.lang.IllegalStateException: 2 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 $Proxy5.loadByUsernameAndPassword(Unknown Source)
at unitmock.LoginServiceTest.testBadScenario(LoginServiceTest.java:60)
...
Wieso nimmt der not() nicht als Matcher an? Ich verstehs irgendwie nicht.
Mfg
SebiB90