Maven не обнаружил модульные тесты ScalaTest

У меня есть следующие юнит-тесты:

import org.scalatest.FunSpec
import org.scalatest.Matchers._

class MyClassSpec extends FunSpec {

  describe("MyClass"){
    describe("Scenario 1"){
      it("Condition 1") {
        true shouldEqual false
      }

      it("Condition 2"){
        true shouldEqual false
      }
    }
  }

}

Когда я запускаю тест maven, он прекрасно компилируется, но тесты не найдены. Вот вывод:

[INFO] --- maven-surefire-plugin:2.7:test (default-test) @ project-name ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- scalatest-maven-plugin:1.0:test (test) @ project-name ---
Discovery starting.
Discovery completed in 202 milliseconds.
Run starting. Expected test count is: 0
DiscoverySuite:
Run completed in 236 milliseconds.
Total number of tests run: 0
Suites: completed 1, aborted 0
Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
No tests were executed.

Как показывает вывод, я использую самый масштабный плагин для Maven. Вот соответствующий раздел моего pom.xml:

<!-- disable surefire -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.7</version>
    <configuration>
        <skipTests>true</skipTests>
    </configuration>
</plugin>
<!-- enable scalatest -->
<plugin>
    <groupId>org.scalatest</groupId>
    <artifactId>scalatest-maven-plugin</artifactId>
    <version>1.0</version>
    <configuration>
        <reportsDirectory>${project.build.directory}/scalatest-reports</reportsDirectory>
        <junitxml>junit</junitxml>
        <filereports>report.txt</filereports>
    </configuration>
    <executions>
        <execution>
            <id>test</id>
            <goals>
                <goal>test</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Я довольно новичок в настройке этого материала, поэтому я не уверен, есть ли что-то еще, что я не проверяю. Я получаю точно такие же результаты, если я запускаю maven clean и затем maven test. Я использую ScalaTest версии 3.0.1. У меня есть другой проект с успешно запущенными тестами, использующими 3.0.1 (я скопировал все, что смог найти, между двумя проектами, которые кажутся даже отдаленно связанными).

2 ответа

Решение

Естественно, проблема, кажется, возникла из-за некоторой информации, которую я не считал актуальной, поэтому я не включил ее в свой первоначальный пост.

Исходный код, который я написал, был инструментом для модульного тестирования, поэтому я поместил его в пространство имен my.cool.package.testUtilities, Таким образом, юнит-тесты были в my.cool.package.testUtilities.test, Перемещение исходного кода из testUtilities (чтобы просто my.cool.package) и перенести тесты на my.cool.package.test позволил тестам быть обнаруженными.

Будучи новичком в java-экосистеме (предыдущий опыт работы с.NET), я не уверен, является ли это какой-то странной ошибкой, связанной с исполнителем тестов, ожидаемым поведением, или действием по переносу файлов в новые пространства имен было что-то еще, и Сами пространства имен не имеют значения. Так что я не уверен, что я узнал из этого.

Вы разместили <skipTest> true </skipTest> который используется для пропуска тестовых случаев. В общем, вы отключили верный огонь, и он используется для:

Плагин Surefire используется на этапе тестирования жизненного цикла сборки для выполнения модульных тестов приложения. Он генерирует отчеты в двух разных форматах. Простые текстовые файлы (.txt) XML-файлы (.xml)

Обновите ваш пом с:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
       <useFile>false</useFile>
       <disableXmlReport>true</disableXmlReport>
       <!-- If you have classpath issue like NoDefClassError,...-->
       <!-- useManifestOnlyJar>false</useManifestOnlyJar -->
       <includes>
           <include>**/*Test.*</include>
            <include>**/*Suite.*</include>
            <include>**/*Spec.*</include>
       </includes>
     </configuration>
</plugin>

Кроме того, вы должны указать расширение вашего тестового файла и изменить версию плагина.

Спасибо

Другие вопросы по тегам