我对单元测试完全陌生,并且已经阅读了有关 Mock 对象的教程。我试图测试一个简单的登录源代码,但无法创建正确的单元测试代码。如果我想针对不正确的用户名、正确的密码和正确的用户名和不正确的密码进行测试,有人可以提供一些帮助:
package com.isyn.testsetup;
public interface ApplicationUserService {
public ApplicationUser findByUserName(String userName);
}
package com.isyn.testsetup;
public class ApplicationUser {
private String userName;
private String password;
public ApplicationUser(String userName, String password) {
this.userName = userName;
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.isyn.testsetup;
public class LoginUser {
private ApplicationUserService applicationUserService;
public LoginUser(ApplicationUserService applicationUserService) {
this.applicationUserService = applicationUserService;
}
public boolean validateCredentials(String userName, String password) {
boolean validationResult = false;
try {
ApplicationUser applicationUser = applicationUserService.findByUserName(userName);
if (applicationUser.getPassword().equals(password)) {
validationResult = true;
}
}
catch (Exception e) {
e.printStackTrace();
}
return validationResult;
}
}
我为有效用户提出了这个测试用例:
package com.isyn.testsetup;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
public class TestLogIn extends TestCase{
private ApplicationUser applicationUser;
private ApplicationUserService mockUserServiceObj;
@Before
public void setup() {
mockUserServiceObj = EasyMock.createMock(ApplicationUserService.class);
applicationUser = new ApplicationUser("gooduser", "goodpassword");
}
@Test
public void test() {
setup();
expect(mockUserServiceObj.findByUserName(eq("gooduser"))).andReturn(applicationUser);
replay(mockUserServiceObj);
LoginUser testUser = new LoginUser(mockUserServiceObj);
boolean checkStatus = testUser.validateCredentials("gooduser", "goodpassword");
assertTrue(checkStatus);
}
}
我想检查不正确的凭据,但不知道它是否会起作用,因为它显示了意外的方法调用!
Need Help!