2016-01-04 7 views
0

Я только недавно начал изучать модульное тестирование и хотел бы реализовать его на моей веб-странице (используя JPA, JSP и MySQL). Я могу понять, как я могу использовать JUnit для тестирования простых вещей, таких как извлечение пользовательской информации из базы данных, но не могу понять, как автоматизировать проверку чего-то вроде входа в систему, когда поле имени пользователя пустое.Unit Testing for GUI

+0

А зачем вам это нужно ** ** блок тестирования? Я имею в виду, что у вас есть уровень представления (JSP), уровень обслуживания, уровень сохранения (JPA + MySQL), все они участвуют в процессе входа в систему. Вы можете проверять данные с помощью javascript в JSP, или на службе, или даже с помощью ограничений базы данных. Какой блок из них вы хотите проверить? – user3707125

+0

Хм, я думаю, что я действительно хочу, чтобы быстро выполнить автоматическое тестирование в одном месте, например, с помощью JUnit Java, вместо того, чтобы вручную просматривать каждую веб-страницу, чтобы проверить, не сломалось ли что-либо. – Entity

+0

Если вы тестируете все слои (презентация, обслуживание, персистентность), а не только то, как ведет себя ваш 'html' +' js', то это интеграционный тест или даже сквозной, и вам нужно использовать соответствующие инструменты и Юнит не среди них. – user3707125

ответ

0

Если вы хотите провести тестирование Unit, то вы должны определить, какое устройство вы хотите проверить. Допустим, у вас есть SecurityService с методом входа в систему, который принимает имя пользователя и пароль и возвращает логическое значение, указывающее, вошел ли пользователь в систему или нет. Тогда вы можете просто передать null, чтобы пользователь мог проверить, что он возвращает false.

Если у вас есть javascript, который не позволяет пользователю нажимать кнопку отправки, когда имя пользователя пуста, тогда у вас будет запись какого-либо javascript-модуля для этой части, так как это другой блок.

Главное, пытаясь написать тестируемое веб-приложение с Java, которое я нашел, это убедиться, что у вас очень мало логики в коде уровня презентации. Удостоверьтесь, что когда пользователь нажимает кнопку, которую вы немедленно отправляете что-то в «Сервис», чтобы выполнить эту работу. Таким образом, вы можете протестировать сервис в изолированном слое презентации.

Вот пример кода для проверки SecurityService, о котором я упоминал.

public class SecurityService 
{ 
    public boolean login(String username, String password) 
    { 
     //Put your logic here 
     return false; 
    } 
} 

Вот тест JUnit

import static org.junit.Assert.*; 

import org.junit.Before; 
import org.junit.Test; 

public class SecurityServiceTest 
{ 
    private SecurityService securityService; 

    @Before 
    public void setUp() 
    { 
     securityService = new SecurityService(); 
     //Mock any database access you need here, like DAOs. 
     //example: securityService.setUserDAO(myMockUserDAO); 
    } 

    @Test 
    public void loginWithNull_False() 
    { 
     assertFalse(securityService.login(null, "123")); 
    } 
}