我在我的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"
如何在测试中启用断言语句?
答案 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);
}