В предыдущих уроках мы выучили, как писать и запускать юнит-тест. Но запускать тесты по одному очень неудобно. Поэтому, Junits Framework позволяет вызывать все тесты или определенную группу тестов из метода main[ ] (главного), который называется Test Runner. Рассмотрим, что из себя представляет и как использовать класс Test Runner.
Для корректного запуска тестов нужно импортировать JunitCore класс. Этот класс имеет важный метод – JUnitCore.RunClasses(Class Testclass).
Шаг 1: Создание JUnit Test Runner класса
1. Делаем следующие импорты:
1 2 3 |
import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; |
Первый импорт – junit.runner.JunitCore: загрузка JunitCore класса.
Второй импорт – junit.runner.Result: для загрузки Result class, чтобы вывести результаты запуска тестов.
Третий – junit.runner.notification.Failure: для загрузки Failure class, чтобы получить результаты с ошибками.
2. Запишем такой код в метод main[ ]:
1 2 3 4 5 6 7 8 9 10 11 12 |
public static void main(String[] args) { //This will run JunitMathProvider_1 class. Result result = JUnitCore.runClasses(JunitMathProvider_1.class); System.out.println("Total number of tests " + result.getRunCount()); System.out.println("Total number of tests failed " + result.getFailureCount()); for(Failure failure : result.getFailures()) { System.out.println(failure.getMessage()); } System.out.println(result.wasSuccessful()); } |
Заметка: В нашем предыдущем уроке мы создали наш тестовый класс с названием “JunitMathProvider_1″. Здесь же, для его запуска мы использовали команду JUnitCore.runClasses(JunitMathProvider_1.class).
Полный класс Test Runner будет выглядеть так:
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 |
package junits; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { //This result object has many methods and it is very useful //Type result and press dot, all the methods will display //This statement is to load all type of results in the result object Result result = JUnitCore.runClasses(JunitMathProvider_1.class); //Here it is getting the run count from the result object System.out.println("Total number of tests " + result.getRunCount()); //This is to get the failure count from the result object System.out.println("Total number of tests failed " + result.getFailureCount()); for(Failure failure : result.getFailures()) { //This will print message only in case of failure System.out.println(failure.getMessage()); } //This will print the overall test result in boolean type System.out.println(result.wasSuccessful()); } } |
Заметка: Как runner находит все тесты внутри тестового класса (JunitMathProvider_1)? Как вы помните, у нас были аннотации ( @Test annotation), которые мы писали над тестовыми методами. Благодаря им TestRunner сразу находит тесты в классе.
Наше окно проэкта будет иметь следующий вид:
Здесь мы выяснили, что такое TestRunner и как его использовать. Дальше мы будем создавать другие тестовые классы.