背景:需要编写 Scala 单元测试,采用 ScalaTest 框架,代码如下:
import org.apache.spark.{SparkConf, SparkContext}
import org.scalatest._
class WorldCountTest extends FlatSpec with BeforeAndAfter{
val master = "local[2]"
var sc: SparkContext = _
it should "test success" in {
val seq = Seq("hello,world","hello,scala","hello,spark")
val lines = sc.parallelize(seq)
val result = WordCount.count(lines)
result.map(p => {
p._1 match {
case "hello"=>
assert(p._2 == 3)
case "world" =>
assert(p._2 == 1)
case "scala"=>
assert(p._2 == 1)
case "spark" =>
assert(p._2 == 1)
case _=> None
}
}).foreach(_=>())
}
before{
val conf = new SparkConf()
.setAppName("worldCount UnitTest")
.setMaster(master)
sc = new SparkContext(conf)
}
after{
if (sc != null){
sc.stop()
}
}
}
报错:ScalaCheck/Test/CallBack not found
解决:
在pom文件中添加ScalaCheck包
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_2.10</artifactId>
<version>3.2.0-SNAP10</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.scalacheck/scalacheck -->
<dependency>
<groupId>org.scalacheck</groupId>
<artifactId>scalacheck_2.10</artifactId>
<version>1.14.0</version>
<scope>test</scope>
</dependency>
问题解决。