В заметки рассмотрим как создать тесты для модульного тестирования с помощью JUnit на java с нуля. Проще всего создать новый maven проект, в зависимости добавляем JUnit, как это показано ниже:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jjj</groupId> <artifactId>jjj</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> </project>
далее сделав maven install (я использую idea) создаем самые простые тесты в package /src/test/java/tests
(у вас может быть другой package) . Сравнение значений происходит с помощью функций assert*
package tests; import TestWrapper; import org.junit.Test; import static org.junit.Assert.*; /** * Created by sbt-zabaykin-av on 29/09/2015. */ public class Test_01 extends TestWrapper { @Test public void test_1(){ String functionName = new Object(){}.getClass().getEnclosingMethod().getName(); System.out.println( functionName ); assertEquals("aaa", "aaa"); } @Test public void test_2(){ String functionName = new Object(){}.getClass().getEnclosingMethod().getName(); System.out.println( functionName ); assertTrue(true); } }
Как видите, мы унаследовались от класса TestWrapper и это не спроста. В данном примере мы хотим сделать специальные функции, которые будут срабатывать до теста и после теста (before\after test), а также для всех тестов в классе TEST_01 и после всех тестов в данном классе (beforeClass\afterClass). Для данной цели следует использовать аннотацию JUnit @Before, @After, @BeforeClass, @AfterClass. Для наглядности пример делает вывод System.out с названием текущей функции. После запуска вы увидите в каком порядке запускались все методы.
package tests; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) public class TestWrapper { @BeforeClass public static void beforeAllTests(){ String functionName = new Object(){}.getClass().getEnclosingMethod().getName(); System.out.println( "***" + functionName ); } @Before public void beforeSimple(){ String functionName = new Object(){}.getClass().getEnclosingMethod().getName(); System.out.println( functionName ); } @AfterClass public static void afterAllTests(){ String functionName = new Object(){}.getClass().getEnclosingMethod().getName(); System.out.println( "***" + functionName ); } @After public void afterSimple(){ String functionName = new Object(){}.getClass().getEnclosingMethod().getName(); System.out.println( functionName ); } }
Таким образом вы можете использовать JUnit для ваших тестов. Хочется отметить, что к сожалению у JUnit нет возможности запускать метод перед всеми тестовыми классами и после всех тестовых классов.