【问题标题】:How exactly works the assert() method in JUnit? [duplicate]JUnit 中的 assert() 方法究竟是如何工作的? [复制]
【发布时间】:2016-11-14 10:16:40
【问题描述】:

我对 JUnit 逻辑有这个疑问。

我已经实现了这个简单的方法:

@Test
public void testBasic() {
    System.out.println("testBasic() START");

    assert(true);

    System.out.println("testBasic() END");

}

正如预期的那样,它是绿色的,因为 assert() 条件设置为 true

然后我改变它使用:

assert(false);

如果条件为假,运行测试它也会再次变为绿色。

阅读文档我知道我也有 assertTrue() 来测试条件是真还是假,所以我可以使用它。

然后:简单的 assert() 方法的确切目的是什么?什么时候用,怎么用?

【问题讨论】:

标签: java junit tdd junit4


【解决方案1】:

assert 是一个 Java 关键字,它引用 Java assertions,而不是引用来自 JUnit 的 assertTrue/False/Equals...() 方法。 这是断言文档:http://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html

要执行 JUnit 断言,请导入合适的类:org.junit.Assert 并做:

import org.junit.Assert;
import org.junit.Test;

public class YourTestClass{
  @Test
  public void testBasic() {
    System.out.println("testBasic() START");

    Assert.assertTrue(true); // pass
    Assert.assertFalse(true); // fail

    System.out.println("testBasic() END");

  }
}

【讨论】:

    【解决方案2】:

    您在那里使用的是 Java 断言,而不是 JUnit。

    默认情况下禁用 Java 断言。您需要使用-ea 命令行选项启用它们:

    java -ea MyClass
    

    【讨论】:

    • 嗯,你是什么意思?你能解释清楚吗?
    • 除非您显式打开它们,否则运行时将忽略断言(甚至不计算内部的表达式)。来源:oracle.com/us/technologies/java/assertions-139853.html
    • 啊,我现在明白你困惑的原因了。请参阅 davidxxx 的帖子。当你认为你在使用 JUnit 的断言时,你正在使用 Java 断言。
    猜你喜欢
    • 2020-10-17
    • 2012-01-26
    • 2019-10-12
    • 1970-01-01
    • 2023-03-16
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    相关资源
    最近更新 更多