assert(false)不会停止执行

Ada*_*tan 4 java eclipse junit assert

在我的一个JUnit测试中,我正在初始化一个对象:

MyObject myObject = new MyObject(220, 120, 0.05, true);
Run Code Online (Sandbox Code Playgroud)

构造函数的签名是:

public MyObject(int minLength, int maxLength, 
                double onBitsRatio, boolean forceAtLeastOneBitOn) 
Run Code Online (Sandbox Code Playgroud)

其次是:

assert(onBitsRatio >= 0.0 && onBitsRatio <= 1.0);
assert(maxLength>=minLength);
assert(false);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,断言不会像我期望的那样停止执行.

为什么JUnit会忽略这些断言?

Sea*_*wen 17

JUnit并没有忽略这些断言,因为正如你所说,你正在使用Java的assert关键字.这是由JVM处理的,而不是JUnit.

几乎可以肯定,您的JVM断言已关闭.事实上,除非你打开它们,否则它们会关闭-ea.否则会忽略这些.


She*_*ari 5

您确定使用的是来自JUnit的正确断言吗?

如果您使用普通的Java断言,则默认情况下将其关闭。您必须显式启用它们。

尝试使用此方法:org.junit.Assert.assertTrue(false) 据我所知,JUnit Assert库中没有所谓的方法assert()

鉴于断言位于某个对象中,并且您希望测试失败,那么您需要启用断言。看一下本教程,其中介绍了如何启用断言。

  • 您不应该在JUnit测试中使用Java断言。您应该使用JUnit断言。如果要启用Java断言,则必须使用-ea jvm选项。 (2认同)