Изображение://wp-content/uploads/2018/11/pitest-logo.png[изображение]
В этой статье мы покажем вам, как использовать Maven PIT плагин для тестирования мутаций , чтобы сгенерировать отчет о тестировании мутаций для проекта Java.
Протестировано с
, Maven 3.5.3
, JUnit 5.3.1
, ПИТест 1.4.3
1. Quick - Плагин Maven PITest
1.1 Чтобы включить тестирование мутации PIT, поместите этот
pitest-maven
в` pom.xml`
pom.xml
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.4.3</version>
<executions>
<execution>
<id>pit-report</id>
<!-- optional, this example attached the goal into mvn test phase -->
<phase>test</phase>
<goals>
<goal>mutationCoverage</goal>
</goals>
</execution>
</executions>
<!-- https://github.com/hcoles/pitest/issues/284 -->
<!-- Need this to support JUnit 5 -->
<dependencies>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>0.8</version>
</dependency>
</dependencies>
<configuration>
<targetClasses>
<param>com.mkyong.examples.** </param>
</targetClasses>
<targetTests>
<param>com.mkyong.examples.** </param>
</targetTests>
</configuration>
</plugin>
1.2 Запустите PITest вручную.
$ mvn clean org.pitest:pitest-maven:mutationCoverage
1.3 Над файлом
pom.xml
прикреплена цель mutationCoverage к этапу тестирования Maven Теперь, когда мы запускаем тест Maven, он автоматически запускает тест PITest.
$ mvn clean test
1.4 Отчет будет сгенерирован в `target/pit-reports/YYYYMMDDHHMI/** `
2. Что такое мутационное тестирование
2.1 Тест на мутацию используется для измерения эффективности теста.
Тестирование мутаций будет использовать mutators (переключение математических операторов, изменение типа возврата, удаление вызова и т. Д.) Для изменения/изменения кода в различные мутации (создание нового кода на основе на мутаторах) и проверьте, не провалится ли модульный тест для новых мутаций (мутация уничтожена).
Эффективность тестов может быть мерой того, сколько мутаций убито.
2.2 Например, этот код:
public boolean isPositive(int number) {
boolean result = false;
if (number >= 0) {
result = true;
}
return result;
}
По умолчанию PITest будет использовать разные mutators для преобразования приведенного выше кода в различные мутации (новый код):
Мутация # 1 - измененная условная граница (мутатор)
public boolean isPositive(int number) {
boolean result = false;
//mutator - changed conditional boundary
if (number > 0) {
result = true;
}
return result;
}
Мутация №2 - Отрицательный условный (мутатор)
public boolean isPositive(int number) {
boolean result = false;
//mutator - negated conditional
if (false) {
result = true;
}
return result;
}