有没有办法设置IntelliJ的JUnit“运行所有测试”命令来自动获取Scala Specs2?即删除此代码段中的样板注释:
@RunWith(classOf[JUnitRunner])
class MySpec extends Specification
必须记住添加它是非常恼人的。
我见过SpecificationWithJUnit
,但这也是一个黑客攻击(并且与TestKit
不兼容)。我正在寻找maven / sbt / intelliJ方面的解决方案。
答案 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,
)