Scalatest集成到Intellij
scalatest maven插件需要至少java 1.8版本,但是公司的开发环境java版本只到1.7,所以无法使用。使用maven自带的单元测试插接maven-surefire-plugin,其实已经足够,关键是需要定义好后缀,参考下面的配置片段。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.13</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>**/*Demo.*</include>
</includes>
</configuration>
</plugin>
同时,要添加scalatest依赖,否则编译无法通过,如下
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_2.10</artifactId>
<version>2.2.6</version>
<scope>test</scope>
</dependency>
最后,也是最关键的一点,在每个类上面添加JUnitRunner执行器标志,并且使用Scalatest框架类(各种scalatest风格随便使用),而不是junit框架类,否则无法执行,如下
import org.scalatest._
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
@RunWith(classOf[JUnitRunner])
class DenseVectorSuite extends FunSuite {
val dv1 = DenseVector(1.0f, 2.0f, 3.0f)
val dv2 = DenseVector(4.0f, 5.0f, 6.0f)
test("norm") {
assert(6.0 == 6.0f)
}
}
虽然有点费解,juint和scalatest混合在一起,搞得有点晕,但是这是无法使用scalatest maven插件的情况下,可以正常执行scalatest框架的权益方法。 按照上面的配置,使用“mvn test”命令即可自动寻找相关类,然后执行test()方法中的测试用例。
输出效果
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.apache.spark.mllib.util.tencent.DenseVector2Demo
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.852 sec
Running org.apache.spark.mllib.util.tencent.DenseVectorSuite
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.013 sec
Running org.apache.spark.mllib.util.tencent.TestMainSuite
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
Results :
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0
步骤总结
- 使用maven-surefire-plugin作为单元测试插件,并添加相关配置
- 添加scalatest依赖
- 使用scalatest框架开发测试用例,如继承FunSuite和test方法中写测试用例
- 测试类的后缀与maven-surefire-plugin中的配置保持一致
mvn test
执行测试
您的打赏是对我最大的鼓励!