在没有@RunWith(classOf [JUnitRunner])舞蹈的情况下运行所有​​测试?

时间:2013-02-25 12:25:33

标签: scala junit intellij-idea specs2

有没有办法设置IntelliJ的JUnit“运行所有测试”命令来自动获取Scala Specs2?即删除此代码段中的样板注释:

@RunWith(classOf[JUnitRunner])
class MySpec extends Specification

必须记住添加它是非常恼人的。

我见过SpecificationWithJUnit,但这也是一个黑客攻击(并且与TestKit不兼容)。我正在寻找maven / sbt / intelliJ方面的解决方案。

2 个答案:

答案 0 :(得分:1)

使用Intellij,您不需要注释来执行您的规范,因为它有自己的specs2 runner。我正在使用IntelliJ 123.100和Scala插件的最新版本(我认为82)并且工作正常(this issue除外)。

答案 1 :(得分:0)

使用@RunWith(classOf[JUnitPlatform])代替JUnitRunner 也许这可以帮助您:

import org.junit.jupiter.api.{DisplayName, Test}
import org.junit.platform.runner.JUnitPlatform
import org.junit.runner.RunWith
import org.scalatest.{BeforeAndAfterAll, Matchers}
import org.scalatest.junit.JUnitSuite

@RunWith(classOf[JUnitPlatform])
class Junit5Test  extends JUnitSuite with Matchers with BeforeAndAfterAll {

  override def beforeAll: Unit = { println(">>> beforeAll <<< ") }

  @Test
  @DisplayName("Example with JUnitSuite")
  @throws(classOf[RuntimeException])
  def throwsExceptionWhenCalled() {
    println("Запуск теста...")
    assertThrows[RuntimeException] { throw new RuntimeException }
  }

}

build.sbt文件:

val junitJupiter  = "5.2.0"
val junitPlatform = "1.2.0"
libraryDependencies ++= Seq(
  "junit"              % "junit"                   % "4.12" % Test,
  "org.junit.jupiter"  % "junit-jupiter-api"       % junitJupiter % Test,
  "org.junit.jupiter"  % "junit-jupiter-engine"    % junitJupiter % Test,
  "org.junit.jupiter"  % "junit-jupiter-params"    % junitJupiter % Test,
  "org.junit.platform" % "junit-platform-launcher" % junitPlatform % Test,
  "org.junit.platform" % "junit-platform-engine"   % junitPlatform % Test,
  "org.junit.platform" % "junit-platform-runner"   % junitPlatform % Test,
)