Я абсолютно новичок в модульном тестировании и прошел обучение по 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!