
В данном уроке я покажу вам как можно автоматизировать тестирование для вашей программы, с помощью данного метода вы можете проверять работоспособность программы после любого изменения её исходного кода, что бы удостоверится что ваше изменение не разрушило логику программы.
Шаг 1.
Создадим Maven Project в Intellij IDEA.
Шаг 2.
Для начало нам нужно подключить зависимость JUnit в pom.xml не забываем что для удобства мы используем Maven.
На момент написания данного урока самая новая версия JUnit 4.11
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency>
После того как мы добавили JUnit в зависимости мы можем с ней работать.
Обязательно проверьте что папка, которая лежит в test/java должна быть зеленым цветом это будет обозначать то что в данной папке лежат тестовые классы и при сборке проекта они не будут собираться в проект.
Если же она не зеленая то заходим в Project Structure(Ctrl+Alt+Shift+S) далее выбираете слева Modules->Sources и указываете что папка test/java будет тестовым ресурсом. Пример на картинке ниже.
Шаг 3.
Допустим у нас есть класс, в котором есть метод, которые выполняет какие то действия, например суммирует какие то числа, это и будет наша логика, которую нужно протестировать.
public class Calculate { public int calA(int a, int b){ return a+b; } }
Как вы должны видеть этот класс когда тестируете?
1) Вы не знаете, какие манипуляции выполняют методы класса, вы видите метод и знаете что он возвращает, также вы знаете что он делает но не знаете как, а так же вы знаете что метод принимает на вход.
А если быть точней, то вот что видит тестер:
public int calA(int a, int b)
2) Вы должны передать в этот метод всевозможные данные и попытаться сделать так что бы тест завалился, это главная цель тестера.
Шаг 4.
Unit тест с технической стороны – это класс который лежит в тестовом ресурсе и который предназначен только для тестирование логики, а не для использования в production коде.
Пример JUnit теста:
@Test public void testMultiply() { // Тестируемый класс MyClass tester = new MyClass(); // Проверяемый метод assertEquals("10 x 5 must be 50", 50, tester.multiply(10, 5)); }
Важно!
В JUnit предполагается, что все тестируемые методы могут быть выполнены в произвольном порядке. Поэтому тесты не должны зависеть от других тестов.
Для того чтобы указать что данные метод есть тестовым его нужно про аннотировать @Test
после чего данный метод можно будет запускать в отдельном потоке для проведения тестирования.
Доступные аннотации JUnit
В следующей таблице приведен обзор имеющихся в аннотации JUnit 4.x.
Аннотация | Описание |
@Test public void method() |
Аннотация @Test определяет что метод method() является тестовым. |
@Before public void method() |
Аннотация @Before указывает на то, что метод будет выполнятся перед каждым тестируемым методом @Test. |
@After public void method() |
Аннотация @After указывает на то что метод будет выполнятся после каждого тестируемого метода @Test |
@BeforeClass public static void method() |
Аннотация @BeforeClass указывает на то, что метод будет выполнятся в начале всех тестов, а точней в момент запуска тестов(перед всеми тестами @Test). |
@AfterClass public static void method() |
Аннотация @AfterClass указывает на то, что метод будет выполнятся после всех тестов. |
@Ignore | Аннотация @Ignore говорит, что метод будет проигнорирован в момент проведения тестирования. |
@Test (expected = Exception.class) | (expected = Exception.class) – указывает на то, что в данном тестовом методе вы преднамеренно ожидается Exception. |
@Test (timeout=100) | (timeout=100) – указывает, что тестируемый метод не должен занимать больше чем 100 миллисекунд. |
Проверяемые методы (основные)
Метод | Описание |
fail(String) | Указывает на то что бы тестовый метод завалился при этом выводя текстовое сообщение. |
assertTrue([message], boolean condition) | Проверяет, что логическое условие истинно. |
assertsEquals([String message], expected, actual) | Проверяет, что два значения совпадают. Примечание: для массивов проверяются ссылки, а не содержание массивов. |
assertNull([message], object) |
Проверяет, что объект является пустым null. |
assertNotNull([message], object) | Проверяет, что объект не является пустым null. |
assertSame([String], expected, actual) | Проверяет, что обе переменные относятся к одному объекту. |
assertNotSame([String], expected, actual) | Проверяет, что обе переменные относятся к разным объектам. |
Шаг 5.
Теперь напишем пример использования тестов:
import com.devcolibri.logic.Calculate; import org.junit.Test; import static junit.framework.Assert.*; public class CalculateTest { @Test public void testCalA() throws Exception { Calculate calculate = new Calculate(); int n = calculate.calA(2, 2); assertEquals(4, n); } }
Как выглядит проект в Intellij IDEA:
Как запустить тестирование в Intellij IDEA?
Для этого можно нажать правой кнопкой мыши по тестовому классу и выбрать Run ‘<name project>’.
Также проходите бесплатный курс «Программирование на языке Java для начинающих»
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
21 комментариев к статье "Unit тестирование с JUnit"