我的团队正在使用Scala、IntelliJ和Maven。
在我为当前模块所需的一些测试中,内部测试的执行顺序很重要。
出于某种原因,在IntelliJ中使用JUnit或ScalaTest运行相同的测试会影响执行顺序。
例如,以下测试:
package com.liveperson.lpbt.hadoop.monitoring.temp
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import org.scalatest.{FunSuite, BeforeAndAfterAll}
@RunWith(classOf[JUnitRunner])
class TempTest extends FunSuite with BeforeAndAfterAll{
println("start TempTest")
override def beforeAll(){
println("beforeAll")
}
override def afterAll(){
println("afterAll")
}
test("test code"){
println("in test code")
}
println("end TempTest")
}
当使用JUnit运行时,上面的代码会打印出来:
start TempTest
end TempTest
in test code
beforeAll
afterAll
当使用ScalaTest运行时,上面的代码会打印出来:
start TempTest
end TempTest
beforeAll
in test code
afterAll
有人知道如何编写这样的测试以确保ScalaTest和JUint中的执行顺序吗?此外,在IntelliJ中如何在它们之间切换?
你能详细说明一下你是如何得到JUnit输出的吗?我只是试着从命令行上做你的课,得到了预期的输出(与你的不同):
Mi Novia:roofSoccer bv$scala-cp~/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar:target/jar_contents/org.scalates.run TempTest启动TempTest结束温度测试搜寻开始。发现在19毫秒内完成。开始跑步。预期的测试计数为:1beforeAllTempTest:在测试代码中-测试代码毕竟运行在140毫秒内完成。运行的测试总数:1套房:已完成1,已中止0测试:成功的1,失败的0,取消的0,忽略的0,挂起的0所有测试均通过。Mi Novia:roofSoccer bv$scala-cp~/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar:目标/jar_contents/org.unit.runner.JUnitCore TempTestJUnit版本4.8.1找不到类:TempTest时间:0.001正常(0次测试)Mi Novia:roofSoccer bv$scala-cp~/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar:target/jar_contents/:.org.junit.runner.JUnitCore TempTestJUnit版本4.8.1启动TempTest结束温度测试beforeAll.在测试代码中毕竟时间:0.078OK(1次测试)