java – 单元测试:断言不起作用?
|
我正在申请UnitTest一段时间,今天我遇到了一些非常奇怪的事情.考虑以下代码: TestObject alo = null; assert alo != null; // Pass!!! Assert.assertNotNull(alo); // Fail,as expected. 我google了一下,发现assert是java内置的,而assertNotNull是JUnit支持的.但我无法理解为什么断言不抱怨null对象? 解决方法Hoang,我认为你在Java语言断言和JUnit断言之间有点混淆.> Java中的assert关键字在1.4中添加,旨在允许验证类中的内部一致性.最佳实践建议是在私有方法中使用它们来测试程序不变量.当断言失败时,抛出java.lang.AssertionError并且通常不会被捕获.这个想法是他们可以在调试期间启用它们并在生产代码中禁用(这是默认设置),但坦率地说,我认为它们并没有真正流行起来.我没有看到他们使用太多. 您显然可以使用其中任何一个,但JUnit断言更具表现力,您不必担心启用或禁用它们.另一方面,它们并不真正用于业务代码. 编辑:这是一个有效的代码示例: import org.junit.Assert;
import org.junit.Test;
public class MyTest {
@Test
public void test() {
Object alo = null;
assert alo != null // Line 9
Assert.assertNotNull(alo); // Line 10
}
}
这是禁用Java断言的运行输出(默认值): c:workspacetest>java -cp bin;libjunit-4.8.1.jar org.junit.runner.JUnitCore MyTest JUnit version 4.8.1 .E Time: 0.064 There was 1 failure: 1) test(MyTest) java.lang.AssertionError: at org.junit.Assert.fail(Assert.java:91) ... at MyTest.test(MyTest.java:10) ... 这是启用Java断言的运行(-ea): c:workspacetest>java -ea -cp bin;libjunit-4.8.1.jar org.junit.runner.JUnitCore MyTest JUnit version 4.8.1 .E Time: 0.064 There was 1 failure: 1) test(MyTest) java.lang.AssertionError: at MyTest.test(MyTest.java:9) ... 请注意,在第一个示例中,Java断言传递,而在第二个示例中,它失败. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- iPhone/iPad开发通过LocalNotification实现iOS定时本地推送
- java – newCachedThreadPool如何重用线程?
- java – 为什么在从Fragment跳转到新Activity时,overridePe
- 通过@Resource注解实现属性装配代码详解
- java – Hazelcast分区计数和线程并发
- java – eclipse helios:tomcat project – jar不会被导出
- Java堆排序算法详解
- 多线程 – 这是在Delphi 6中设置线程名称的正确方法吗?
- java – 处理multipart / form-data输入
- Android中Activity中左右滑动手势的监听
