Skip to content

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

wizardjedi edited this page Apr 8, 2013 · 8 revisions

Краткое введение в Unit тестирование

Unit-тестирование важная составляющая процесса разработки приложения. Unit-тестирование позволяет быть уверенным в изменениях, что они не "ломают" ранее реализованную логику.

unit-тестирование сводится к проверке условий (утверждений), которые в Junit представлены как вызов метода assert*.

Добавление зависимостей JUnit в проект Maven

В качестве библиотеки для проведения unit-тестирования будем использовать JUnit версии 4.11. Добавим в pom.xml следующую зависимость:

pom.xml

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.11</version>
	<scope>test</scope>
</dependency>

<scope>test</scope> - указывает, что это зависимость на время проведения тестов

Минимальный тест будет выглядеть как: AppTest.java

package learn.sprofile;

import junit.framework.TestCase;

public class AppTest extends TestCase {
	@Test
	public void testSomeData() {
		assertTrue("Constant is not true", true);
	}
}

Данный тест имеет 1 тестовый метод в котором проверяется 1 утверждение, в случае неверности устверждения будет выведена строка "Constant is not true". Тестовый метод помечен с помощью аннотации @Test.

Запуск тестов на выполнение в Maven

Для запуска тестов в maven используется surefire-plugin.

Запуск тестов приложения

$ mvn test

Запуск единичного теста

$ mvn test -Dtest=TestClass

Запуск метода в тесте

$ mvn test -Dtest=TestClass#someMethod

Запуск всех методов, начинающихся с testRequest в классе теста

$ mvn test -Dtest=TestClass#testRequest*

todo!

Запуск тестов на выполнение в IDE на примере NetBeans

В IDE(eclipse, netbeans, idea) существует возможность запуска тестов непосредственно из IDE и в IDE же и смотреть результаты тестов.

Рассмотрим запуск и анализ результатов тестов в NetBeans.

Для запуска всех тестов необходимо выбрать пункт "Протестировать проект" в меню "Выполнить" или нажать Alt+F6. Для теста одиночного файла необходимо выбрать "Протестировать файл" или нажать Ctrl+F6.

В окне "Результаты тестирования" можно увидеть все пройденные или не пройденные тесты. Кроме того, можно ознакомиться с причиной "падения" теста и провести повторный запуск теста.

alt

alt

alt

Интеграция JUnit и Spring

Для тестирования проектов, написанных с использованием Spring framework, необходимо на этапе запуска тестов создавать контекст Spring. В состав spring входит библиотека Spring test, которая содержит набор классов для облегчения тестирования Spring-приложений.

Для начала подключим Spring test в pom.xml

pom.xml

<properties>
	<spring.version>3.2.2.RELEASE</spring.version>
</properties>

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-test</artifactId>
	<version>${spring.version}</version>
</dependency>

После подключения Spring test появляется возможность использовать контекст Spring в тестах JUnit. В идеологии junit есть такое понятие как test runner - это вспомогательные классы, которые осуществляют запуск тестов. Одним из таких runner'ов является runner для поднятия контекста Spring в тестах.

Для его использования необходимо указать класс SpringJUnit4ClassRunner в качестве аргумента аннотации @RunWith.

@RunWith(SpringJUnit4ClassRunner.class)
public class SomeTest extends TestCase {
}

После указания runner'а необходимо указать местоположение файлов конфигурации контекста с использованием аннотации @ContextConfiguration.

Результирующее объявление класса теста будет выглядеть так:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/spring/root.xml"})
public class UserProfileVoterTest extends TestCase {
...
}

путь к конфигурации указывается относительно директории test/resources, в которой должны располагаться файлы ресурсов для тестов.

Утверждения hamcrest для коллекций

todo!

Тестирование БД

todo!

Создание моков с помощью Mockito

todo!

Clone this wiki locally