2014-09-30 8 views
0

Я абсолютно не знаком с модульным тестированием и ознакомился с учебными материалами о объекте Mock. Я попытался протестировать простой исходный код входа, но не смог создать правильный тестовый код. Может кто-нибудь, пожалуйста, предоставить некоторую помощь, если я хочу, чтобы проверить от неправильного имени пользователя, правильного пароля и правильного имени пользователя и неправильного пароля:Единичное тестирование простой службы входа в систему с использованием EasyMock

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); 


     } 
} 

I хотел проверить неверные учетные данные и не знать, будет ли он работать, поскольку он показывает неожиданный вызов метода!

Need Help! 

ответ

0

Я запустил тестовый чехол, и он работает без проблем. Какое точное сообщение об ошибке вы видите?

Несколько замечаний:

  1. Ваш тест класс расширяет TestCase, но нет никакой необходимости в том, что в JUnit 4. Просто добавьте аннотации к методам испытаний
  2. В() метод тестирования, вы звоните по настройке(), но поскольку вы добавили @Before к setup(), JUnit вызывает его перед вызовом каждого метода, который имеет @Test
+0

Спасибо, что нашли время для этого. Поэтому, поскольку я абсолютно новичок в тестировании, я хотел бы знать, что мне делать для проверки тестовых случаев, таких как 1. неправильное имя пользователя, правильный пароль 2. исправить имя пользователя, неправильный пароль 3. null имя пользователя, null пароль если я его испытания "baduser" и "goodpassword", он показывает сообщение об ошибке: java.lang.AssertionError: Неожиданный вызов метода ApplicationUserService.findByUserName ("baduser"): ApplicationUserService.findByUserName ("gooduser"): ожидается : 1, actual: 0 –

+0

Также о вашей второй заботе, если я не вызываю setup(), она показывает ошибку. Вы можете попробовать и посмотреть. –

Смежные вопросы