如何打开用sbt运行的junit4中的断言语句?

时间:2014-07-08 17:05:19

标签: java junit sbt assert

我在我的java项目中使用sbt进行开发例程,在运行测试时使用junit-interface。 但默认情况下它会忽略assert语句(断言用于检查底层代码中的某些不变量)。例如,此测试通过:

@Test
public void test() {
  // this is example; In reality assertion somewhere in code under test
  assert false; // not assertTrue(or whatever) from junit
}

我的build.sbt文件非常简单:

organization := "Kharandziuk"

name := "Some alg project"

version := "1.0-SNAPSHOT"

libraryDependencies ++= Seq(
    "junit" % "junit" % "4.8.1" % "test",
    "com.novocode" % "junit-interface" % "0.10" % "test"
)

autoScalaLibrary := false

testOptions += Tests.Argument(TestFrameworks.JUnit, "-a", "-q", "-v")

fork in run := true

javaOptions in run += "-ea"

如何在测试中启用断言语句?

2 个答案:

答案 0 :(得分:2)

您可以将其设置为单独的任务,例如。 test S:

javaOptions in test += "-ea"

或者只是在任何地方设置它:

javaOptions += "-ea"

无论如何,@ malirious是正确的,因为你通常不希望通过单元测试导致断言失败。单元测试应该 sandbox 你的代码的逻辑

答案 1 :(得分:1)

您对“assert”的使用是java中的关键字。需要通过提供JVM选项“-ea”来启用它们。

我认为,你想使用org.junit.Assert的静态方法。

@Test
public void test() {
  org.junit.Assert.assertTrue(SOME CONDITION);
}