Unit тестирование с JUnit – Devcolibri – Android для начинающих

Unit тестирование с JUnit

В данном уроке я покажу вам как можно автоматизировать тестирование для вашей программы, с помощью данного метода вы можете проверять работоспособность программы после любого изменения её исходного кода, что бы удостоверится что ваше изменение не разрушило логику программы.

Шаг 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

153852
26/03/2013

21 комментариев к статье "Unit тестирование с JUnit"

Добавить комментарий

Сайт использует cookie-файлы для того, чтобы вам было удобнее им пользоваться. Для продолжения работы с сайтом, вам необходимо принять использование cookie-файлов.

Я ознакомлен(а)