首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您是否有任何有效使用Java Assert的技巧?

您是否有任何有效使用Java Assert的技巧?
EN

Stack Overflow用户
提问于 2010-04-24 14:35:06
回答 4查看 429关注 0票数 4

我没有看到很多开发人员使用Java Assert,但我非常热衷于使用它们。你能分享一些有效使用它们的技巧吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-26 08:19:41

我使用assert来检查非公共方法的preconditions,仅此而已(我并不要求做契约式设计)。为了以防万一,让我提醒一下使用断言进行编程会对Preconditions, Postconditions, and Class Invariants有什么影响

虽然assert构造不是成熟的契约式设计工具,但它可以帮助支持非正式的契约式设计风格的编程。

要在Java中获得全面的支持,可以考虑使用第三方库(来自Wikipedia):

iContract2、Contract4J、jContractor、Jcontract、C4J、JavaDbC、STclass、Jass预处理器、带AspectJ的OVal、CodePro建模语言、用于Spring框架的SpringContracts或现代Jass、使用AspectJ的自定义、使用AspectJ的JavaDbC、使用Java扩展的JavaTESK。

票数 6
EN

Stack Overflow用户

发布于 2010-04-26 07:50:42

由于您的问题被标记为"java“和”契约式设计“,并且没有提到JML,我想我应该发布一个链接:

http://www.eecs.ucf.edu/~leavens/JML/

JML是一种用于在Java中编写契约的注释语言。契约可以通过运行时断言检查,也可以静态验证。通过深入研究JML社区所做的工作,您可以在Java和其他语言中找到大量关于契约式设计的好原则和想法。JML启发了其他语言的类似注释语言,例如Spec# (用于.NET)和ACSL (用于C)。

票数 4
EN

Stack Overflow用户

发布于 2010-04-24 14:51:56

assert用于在代码中插入检查,这些检查在开发过程中会非常响亮地失败,并且在生产过程中会被忽略(由标志确定)。

这是从C世界继承下来的,但由于jUnit提供了更系统的方法,所以没有流行起来,在这种方法中,你有独立的测试套件,可以随意运行。

我建议你在花太多时间研究assert之前,先使用junit进行测试驱动开发,你很可能会发现,像我一样,断言不如单元测试有用。

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

https://stackoverflow.com/questions/2703480

复制
相关文章

相似问题

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