Maven没有发现ScalaTest单元测试

时间:2017-11-13 15:38:24

标签: scala maven scalatest scalatest-maven-plugin

我有以下单元测试:

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的scalatest插件。这是我的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测试,我会得到完全相同的结果。我正在使用ScalaTest 3.0.1版。我还有另一个使用3.0.1成功运行测试的项目(我已经复制了两个看起来甚至远程相关的项目之间的所有内容)。

2 个答案:

答案 0 :(得分:0)

您已放置<skipTest> true </skipTest>用于跳过测试用例。所以基本上你已经禁用了万无一失,它用于:

  

Surefire插件在构建的测试阶段使用   生命周期,用于执行应用程序的单元测试。它产生了   以两种不同的文件格式报告纯文本文件(.txt)XML   文件(.xml)

用以下内容更新你的pom:

<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>

include 中,您必须提供测试文件的扩展名,并且可以更改插件的版本。

由于

答案 1 :(得分:0)

当然,这个问题似乎源于我认为不相关的一些信息,所以我没有把它包含在我原来的帖子里。

我写的源代码是一个单元测试工具,所以我把它放在命名空间my.cool.package.testUtilities中。单元测试因此在my.cool.package.testUtilities.test。将源代码移出testUtilities(仅my.cool.package)并将测试移至my.cool.package.test只允许发现测试。

作为java生态系统的新手(之前的.NET经验),我不确定这是否是测试运行器,预期行为或将文件移动到新命名空间的行为的奇怪错误其他东西,命名空间本身是无关紧要的。所以我不确定从中学到了什么。