1

我的团队正在使用 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

有人知道如何编写这样的测试来确保 ScalaTests 和 JUint 中的执行顺序吗?另外,你如何在 IntelliJ 中切换它们?

4

1 回答 1

0

您能否详细说明您是如何获得 JUnit 输出的?我刚刚尝试从命令行完成您的课程并获得了预期的输出(与您的不同):

Mi-Novia:roofSoccer bv$ scala -cp ~/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar:target/jar_contents/ org.scalatest.run TempTest
开始温度测试
结束温度测试
发现开始。
发现在 19 毫秒内完成。
开始运行。预期测试计数为:1
之前所有
温度测试:
在测试代​​码中
- 测试代码
毕竟
运行在 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:target/jar_contents/ org.junit.runner.JUnitCore TempTest
JUnit 版本 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 TempTest
JUnit 版本 4.8.1
开始温度测试
结束温度测试
之前所有
.in 测试代码
毕竟

时间:0.078

好的(1 次测试)
于 2013-08-14T16:39:57.313 回答