首页 > 解决方案 > Jacoco 插件显示 Scala 单元测试的 0% 覆盖率报告

问题描述

我已经为我的 Spark-Scala 代码编写了单元测试,如下所示

class SparkReaderTest extends FunSuite with BeforeAndAfterAll{
  @transient
  var spark:SparkSession = _
  override def beforeAll(): Unit = {
    spark=
      SparkSession
        .builder()
        .master("local[*]")
        .appName("SparkScalaTest")
        .getOrCreate()
  }
  override  def afterAll(): Unit = {
    spark.stop()
  }
  test("test for utilities for read operations"){
    assert(txtToDFDefault("mockfiles.log",spark).count()>1,"reading raw data")
}
}

这是我的 pom.xml

<dependencies>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.12.14</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest_2.12</artifactId>
        <version>3.0.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.scalactic</groupId>
        <artifactId>scalactic_2.12</artifactId>
        <version>3.0.2</version>
        <scope>test</scope>
    </dependency>
    ..............
    </dependencies>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.3</version>
            <executions>
                <execution>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        </plugins>

当我运行 mvn package 命令时,我看到运行了 0 个测试

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Running tutorial.ayan.utilities.SparkWriterTest
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running tutorial.ayan.utilities.SparkReaderTest
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running tutorial.ayan.utilities.CommonUtilsTest
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running tutorial.ayan.utilities.ObjectStoreUtilsTest
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running tutorial.ayan.utilities.SchemaToCaseClassTest
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

为什么它显示为 0 个测试运行并且覆盖率也显示为 0%?当我从 intellij 手动运行测试时,我可以看到单元测试成功运行以及覆盖率报告。

标签: scalajacocojacoco-maven-plugin

解决方案


推荐阅读