私は単体テストがまったく初めてで、モックオブジェクトに関するチュートリアルを経験しました。簡単なログイン ソース コードをテストしようとしましたが、適切な単体テスト コードを作成できませんでした。間違ったユーザー名、正しいパスワード、正しいユーザー名と間違ったパスワードに対してテストしたい場合は、誰か助けてください:
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!