首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >assert与JUnit断言

assert与JUnit断言
EN

Stack Overflow用户
提问于 2010-06-03 21:26:46
回答 6查看 32.5K关注 0票数 89

今天,我看到了一个使用java断言而不是JUnit断言的JUnit测试用例--选择其中一个有明显的优点或缺点吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-06-03 21:38:44

在JUnit4中,JUnit断言抛出的异常(实际上是错误)与java assert关键字(AssertionError)抛出的错误相同,因此它与assertTrue完全相同,除了堆栈跟踪之外,您无法区分它们。

也就是说,断言必须在JVM中使用一个特殊的标志来运行,这会导致许多测试看起来像是通过了,因为在运行JUnit测试时,有人忘记了用这个标志配置系统--这是不好的。

通常,由于这个原因,我认为使用JUnit assertTrue是更好的实践,因为它保证了测试的运行,确保了一致性(您有时会使用assertThat或其他非java关键字的断言),并且如果JUnit断言的行为在将来应该发生变化(例如连接到某种过滤器或其他未来的JUnit特性中),您的代码将能够利用这一点。

java中assert关键字的真正目的是能够在不影响运行时的情况下将其关闭。这不适用于单元测试。

票数 100
EN

Stack Overflow用户

发布于 2010-06-03 21:29:57

我更喜欢JUnit断言,因为它们提供了比内置assert语句更丰富的API,而且更重要的是,不需要像assert那样显式启用,后者需要-ea JVM参数。

票数 26
EN

Stack Overflow用户

发布于 2011-06-07 22:57:11

当测试失败时,你会得到更多的信息。

java.lang.AssertionError: expected:<1> but was:<2>中的assertEquals(1, 2);结果

vs

java.lang.AssertionError中的assert(1 == 2);结果

如果将消息参数添加到assertEquals,则可以获得更多信息

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2966347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档