Запуск котлинтест в мавене
Некоторое время я боролся за то, чтобы тесты kotlintest работали должным образом с maven. Я далеко от эксперта Maven, поэтому я надеюсь, что кто-то может сказать мне, где я иду не так.
Я начал с примера Maven из репозитория Kotlin, и это прекрасно работает. Проблема возникает, когда добавляются дополнительные тесты. Когда я добавляю больше тестов (во вложенных пакетах), "запускается" только один тест, остальные, кажется, запускают фиктивный метод теста. Например, с учетом следующей иерархии:
С этим pom.xml, работает mvn test
дает:
Running BarTest
Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.007 sec <<< FAILURE! - in BarTest
should fail Time elapsed: 0.004 sec <<< FAILURE!
java.lang.AssertionError: expected: true but was: false
Running test.BarTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.01 sec - in test.BarTest
Running a.AThingTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in a.AThingTest
Running newtest.FooTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec - in newtest.FooTest
Results :
Failed tests:
BarTest expected: true but was: false
Tests run: 5, Failures: 1, Errors: 0, Skipped: 0
Самый первый: Running BarTest
на самом деле правильный тест (и имеет намеренный сбой). Все остальные (Running test.BarTest
, Running a.AThingTest
, Running newtest.FooTest
) на самом деле не запускают мои тесты (у меня там тоже есть преднамеренные сбои), и кажется, что это всего лишь несколько фиктивных тестов (возможно, от фиктивных @Test
в IntelliTestMarker
?). Я включил образец одного из этих тестовых файлов ниже.
Что мне нужно сделать, чтобы запустить все мои настоящие тесты? И, желательно, чтобы в выводе не отображались "фиктивные" тесты?
BarTest.kt:
package test
import io.kotlintest.shouldBe
import io.kotlintest.specs.ShouldSpec
class BarTest : ShouldSpec() {
init {
"Bar" {
should("succeed") {
true shouldBe true
}
should("fail") {
false shouldBe true
}
}
}
}
1 ответ
Ответ смущающе довольно прост. Обновление до 3.0.3. Это была ошибка в 3.0.0 до 3.0.2, которая затрагивала сборки Maven.
Для полноты здесь приведены подробные инструкции по проекту для KotlinTest 3.0.x.
Добавьте эту зависимость к вашему <dependencies>
раздел.
<dependency>
<groupId>io.kotlintest</groupId>
<artifactId>kotlintest-runner-junit5</artifactId>
<version>3.0.3</version>
<scope>test</scope>
</dependency>
Убедитесь, что вы добавили surefire
плагин к вашему <build><plugins>
раздел и вместе с ним добавить провайдера верной платформы jUnit.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
</plugin>
Примечание: есть ошибка с платформой jUnit и плагином surefire 2.20.0, поэтому придерживайтесь 2.19.1 на данный момент.
Вот полный проект на веб-сайте KotlinTest: https://github.com/kotlintest/kotlintest/tree/master/kotlintest-samples/kotlintest-samples-maven