Т.к. в предыдущем уроке мы определили «тестируемое приложение» (AUT ), то мы можем приступить к написанию нашего первого теста. В Junit тесты пишутся в форме классов. Каждый класс имеет метод или набор методов, которые будут тестировать отдельный функционал модуля. Напишем простой тест для проверки корректной работы сложения (addition) в MathProvider классе.
Шаг 1) Написание Первого JUnit теста
- Для начала нам следует импортировать важные элементы окружения (namespaces):
1 2 3 4 5 |
import static org.junit.Assert.*; import org.junit.Test; import Application.MathProvider; |
Первый импорт – org.junit.Assert.* : служит для проверки тестовой логики.
Второй импорт – org.junit.Test : будет импортировать @Test аннотации для Junits, эти аннотации указывают фреймворку Junit, что этот метод является тестовым методом.
Третий импорт – Application.MathProvider : служит для импорта MathProvider класса.
- Определяем класс и переменные класса.
1 2 3 4 5 6 7 8 9 10 |
public class JunitMathProvider_1{ MathProvider provider; public JunitMathProvider_1(){ provider = new MathProvider(); } } |
Т.к. нам нужно протестировать MathProvider класс, то мы создали простой класс и назвали его – JunitMathProvider_1. Также создали переменную provider с типом MathProvider.
- Пишем тест:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@Test public void add() { System.out.println("Starting test " + new Object(){}.getClass().getEnclosingMethod().getName()); int firstNumber = 10; int secondNumber = 20; assertEquals(firstNumber + secondNumber, provider.Add(firstNumber, secondNumber)); System.out.println("Ending test " + new Object(){}.getClass().getEnclosingMethod().getName()); } |
Здесь мы создали метод add() для проверки функционала сложения (addition) в классе MathProvider. Обьявили две переменные firstNumber и lastNumber с типом int и определили для них значения 10 и 20.
Затем проверяем, что сумма этих двух чисел эквивалентна возвращаемой суммы из метода MathProvider.Add.
Дальше с помощью оператора System.out.println выводится сообщение, что соответствующий тест закончился.
Что такое Assert?
Assert означает проверку значений (данных). Assert сравнивает фактические значения (данные) с ожидаемыми значениями и выводит ошибку при ошибке.
Что такое аннотация @Test ?
Все тесты в Junit4 имеют аннотацию @Test, которые записываются внутри метода. @Test помогают Junit определять тесты внутри класса.
Сейчас наш тест имеет следующий вид:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
package Application.UnitTests; import static org.junit.Assert.*; import junit.extensions.*; import org.junit.Test; import Application.MathProvider; public class JunitMathProvider_1 { MathProvider provider; public SimpleTest(){ provider = new MathProvider(); } @Test public void add() { System.out.println("Starting test " + new Object(){}.getClass().getEnclosingMethod().getName()); int firstNumber = 10; int secondNumber = 20; assertEquals(firstNumber + secondNumber, provider.Add(firstNumber, secondNumber)); System.out.println("Ending test " + new Object(){}.getClass().getEnclosingMethod().getName()); } } |
Шаг 2: Запуск первого JUnit теста
Вы можете запускать все тесты одновременно или поочередно. На данном этапе мы будем запускать тест кейс отдельно.
- Кликните на JunitMathProvider_1 класс правой кнопкой мыши, выберите Run As > Junit Test. Результаты будут следующими:
Шаг 3: Выбор JUnit Perspective
1. Если вы используете Eclipse, то можете увидеть Junit perspective, кликнув на Window > Show View > Other:
2. В открывшемся окне ищите для выберите Junit.
3. Вы увидите Junit во View pane, как показано ниже:
Убедитесь, что кнопка “two small cross” не нажата. При нажатой кнопке вы не сможете увидеть все результаты прохождения тестов, будут видны только «зафейленные».
Вы увидите тестовые классы и количество тестов внутри них. В данный момент у нас только один тест – add() . Все что вам потребуется для повторного запуска теста, – это кликнуть на кнопку run в Junit view pane.