- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?
2005 年 10 月 13 日
JUnit 是 Java? 语言事实上的 标准单元测试库。JUnit 4 是该库三年以来最具里程碑意义的一次发布。它的新特性主要是通过采用 Java 5 中的标记(annotation)而不是利用子类、反射或命名机制来识别测试,从而简化测试。在本文中,执着的代码测试人员 Elliotte Harold 以 JUnit 4 为例,详细介绍了如何在自己的工作中使用这个新框架。注意,本文假设读者具有 JUnit 的使用经验。
JUnit 由 Kent Beck 和 Erich Gamma 开发,几乎毫无疑问是迄今所开发的最重要的第三方 Java 库。正如 Martin Fowler 所说,“在软件开发领域,从来就没有如此少的代码起到了如此重要的作用”。JUnit 引导并促进了测试的盛行。由于 JUnit,Java 代码变得更健壮,更可靠,bug 也比以前更少。JUnit(它本身的灵感来自 Smalltalk 的 SUnit)衍生了许多 xUnit 工具,将单元测试的优势应用于各种语言。nUnit (.NET)、pyUnit (Python)、CppUnit (C++)、dUnit (Delphi) 以及其他工具,影响了各种平台和语言上的程序员的测试工作。
然而,JUnit 仅仅是一个工具而已。真正的优势来自于 JUnit 所采用的思想和技术,而不是框架本身。单元测试、测试先行的编程和测试驱动的开发并非都要在 JUnit 中实现,任何比较 GUI 的编程都必须用 Swing 来完成。JUnit 本身的最后一次更新差不多是三年以前了。尽管它被证明比大多数框架更健壮、更持久,但是也发现了 bug;而更重要的是,Java 不断在发展。Java 语言现在支持泛型、枚举、可变长度参数列表和注释,这些特性为可重用的框架设计带来了新的可能。
JUnit 的停滞不前并没有被那些想要废弃它的程序员所打败。挑战者包括 Bill Venners 的 Artima SuiteRunner 以及 Cedric Beust 的 TestNG 等。这些库有一些可圈可点的特性,但是都没有达到 JUnit 的知名度和市场占有份额。它们都没有在诸如 Ant、Maven 或 Eclipse 之类的产品中具有广泛的开箱即用支持。所以 Beck 和 Gamma 着手开发了一个新版本的 JUnit,它利用 Java 5 的新特性(尤其是注释)的优势,使得单元测试比起用最初的 JUnit 来说更加简单。用 Beck 的话来说,“JUnit 4 的主题是通过进一步简化 JUnit,鼓励更多的开发人员编写更多的测试。”JUnit 4 尽管保持了与现有 JUnit 3.8 测试套件的向后兼容,但是它仍然承诺是自 JUnit 1.0 以来 Java 单元测试方面最重大的改进。
注意:该框架的改进是相当前沿的。尽管 JUnit 4 的大轮廓很清晰,但是其细节仍然可以改变。这意味着本文是对 JUnit 4 抢先看,而不是它的最终效果。
以前所有版本的 JUnit 都使用命名约定和反射来定位测试。例如,下面的代码测试 1+1 等于 2:
import junit.framework.TestCase;
public class AdditionTest extends TestCase {
private int x = 1;
private int y = 1;
public void testAddition() {
int z = x + y;
assertEquals(2, z);
}
}
而在 JUnit 4 中,测试是由 @Test 注释来识别的,如下所示:
import org.junit.Test;
import junit.framework.TestCase;
public class AdditionTest extends TestCase {
private int x = 1;
private int y = 1;
@Test public void testAddition() {
int z = x + y;
assertEquals(2, z);
}
}
使用注释的优点是不再需要将所有的方法命名为 testFoo()、testBar(),等等。例如,下面的方法也可以工作:
import org.junit.Test;
import junit.framework.TestCase;
public class AdditionTest extends TestCase {
private in
您可能关注的文档
- JONJON囧囧活动方案概要.ppt
- JP低压配电无功补偿综合柜产品说明书(金导公司)概要.doc
- B.1楼地面工程概要.ppt
- jquery和ajax内容概要.doc
- B_7__U_1_(高中英语选修七第一单元语法:动词不定式)概要.ppt
- JSA工作分析法概要.ppt
- JSS-296组合电台中文操作说明书概要.doc
- B1_4_1-无机非金属材料的主角——硅概要.ppt
- B1Unit8Text1英汉对照(原Unit8)概要.doc
- js课程设计设计报告概要.doc
- 2025广州银行人才招聘备考题库参考答案详解.docx
- 2025广东梅州市蕉岭县南磜镇洋山村党群服务中心专职工作人员招聘1人备考题库含答案详解(能力提升).docx
- 2025广西崇左市公安局江州分局招聘警务辅助人员30人备考题库含答案详解(b卷).docx
- 2025河北衡水银行科技员工社会招聘30人备考题库附答案详解(满分必刷).docx
- 2025广东肇庆市怀集县冷坑镇镇派驻村(社区)党群服务中心工作人员招聘1人备考题库含答案详解(实用).docx
- 2025徽商银行社会招聘备考题库及答案详解1套.docx
- 2025广西壮族自治区公安厅招聘警务辅助人员11人备考题库含答案详解.docx
- 2025广西玉林市公安局第四次公开招聘警务辅助人员36人备考题库及答案详解(全国通用).docx
- 江南大学食品安全课件.ppt
- 派出所民警执法培训课件.ppt
原创力文档


文档评论(0)