﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-javaboys-文章分类-JUnit</title><link>http://www.blogjava.net/javaboys/category/21177.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 01 Apr 2007 17:05:41 GMT</lastBuildDate><pubDate>Sun, 01 Apr 2007 17:05:41 GMT</pubDate><ttl>60</ttl><item><title>JUnit入门 [程序开发Java] </title><link>http://www.blogjava.net/javaboys/articles/107774.html</link><dc:creator>javaboys</dc:creator><author>javaboys</author><pubDate>Sun, 01 Apr 2007 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/javaboys/articles/107774.html</guid><wfw:comment>http://www.blogjava.net/javaboys/comments/107774.html</wfw:comment><comments>http://www.blogjava.net/javaboys/articles/107774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javaboys/comments/commentRss/107774.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javaboys/services/trackbacks/107774.html</trackback:ping><description><![CDATA[
		<h2>
				<a id="viewpost1_TitleUrl" href="/javaboys/archive/2007/03/31/107643.html">
						<font color="#000000">JUnit入门 [程序开发Java] </font>
				</a>
		</h2>JUnit入门 [程序开发Java] 
<hr style="BORDER-RIGHT: #eeeeee 1px solid; BORDER-TOP: #eeeeee 1px solid; BORDER-LEFT: #eeeeee 1px solid; BORDER-BOTTOM: #eeeeee 1px solid" width="94%" size="1" /><div class="posttime"><small><font size="1">2007-03-31 01:10:21</font></small></div><table id="content" style="TABLE-LAYOUT: fixed; WIDTH: 650px" cellspacing="10" cellpadding="0" width="650" border="0"><tbody><tr><td><div>　一、简介 <br /><br />　　JUnit是一个开源的java单元测试框架。在1997年，由 Erich Gamma 和 Kent Beck 开发完成。这两个牛人中 Erich Gamma 是 GOF 之一；Kent Beck 则在 XP 中有重要的贡献（你觉得眼熟一点都不奇怪）。 <br />　　正如常言道：“麻雀虽小，五脏俱全。” JUnit设计的非常小巧，但是功能却非常强大。 <br />　　下面是JUnit一些特性的总结： <br />　　1) 提供的API可以让你写出测试结果明确的可重用单元测试用例 <br />　　2) 提供了三种方式来显示你的测试结果，而且还可以扩展 <br />　　3) 提供了单元测试用例成批运行的功能 <br />　　4) 超轻量级而且使用简单，没有商业性的欺骗和无用的向导 <br />　　5) 整个框架设计良好，易扩展 <br />　　对不同性质的被测对象，如Class，Jsp，Servlet，Ejb等，Junit有不同的使用技巧。由于本文的性质，以下仅以Class测试为例。 <br /><br />　　二、<a class="blue" href="http://download.it.com.cn/" target="_blank"><font color="#000000">下载</font></a><br /><br />　　点击<a href="http://www.junit.org/" target="_blank"><font color="#000000">http://www.junit.org</font></a>可以下载到最新版本的JUnit，本文使用的为3.8.1版。至于安装或者配置之类，你只需要轻松的将下载下来的压缩包中的jar文件，放到你工程的classpath中就可以了。 <br />　　这样，你的系统中就可以使用JUnit编写单元测试代码了（是不是很简单）！ <br /><br />　　三、HelloWorld <br /><br />　　记得在几乎每本语言教学书上都能找到HelloWorld这个入门代码。今天在这里，我们也从一个简单到根本不用单元测试的例子入手。这是一个只会做两数加减的超级简单的计算器（小学一年级必备极品）。代码如下： <br /><br />　　public class SampleCalculator <br />　　{ <br />　　 public int add(int augend , int addend) <br />　　 { <br />　　 return augend + addend ; <br />　　 } <br /><br />　　 public int subtration(int minuend , int subtrahend) <br /><br />　　 { <br /><br />　　 return minuend - subtrahend ; <br /><br />　　 } <br /><br />　　} <br /><br />　　将上面的代码编译通过。下面就是我为上面程序写的一个单元测试用例： <br /><br />　　//请注意这个程序里面类名和方法名的特征 <br />　　import junit.framework.TestCase; <br />　　public class TestSample extends TestCase <br /><br />　　{ <br /><br />　　 public void testAdd() <br /><br />　　 { <br /><br />　　SampleCalculator calculator = new SampleCalculator(); <br /><br />　　 int result = calculator.add(50 , 20); <br /><br />　　 assertEquals(70 , result); <br /><br />　　 } <br /><br />　　 public void testSubtration() <br /><br />　　 { <br /><br />　　 SampleCalculator calculator = new SampleCalculator(); <br /><br />　　 int result = calculator.subtration(50 , 20); <br /><br />　　 assertEquals(30 , result); <br /><br />　　 } <br /><br />　　} <br /><br />　　好了，在DOS命令行里面输入javac TestSample.java 将测试类编译通过。然后再输入 java junit.swingui.TestRunner TestSample 运行测试类，你会看到如下的窗口。 <br /><br />　　绿色说明单元测试通过，没有错误产生；如果是红色的，则就是说测试失败了。这样一个简单的单元测试就完成了. <br /><br />　　按照框架规定：编写的所有测试类，必须继承自junit.framework.TestCase类；里面的测试方法，命名应该以Test开头，必须是public void 而且不能有参数；而且为了测试查错方便，尽量一个TestXXX方法对一个功能单一的方法进行测试；使用assertEquals等junit.framework.TestCase中的断言方法来判断测试结果正确与否。 <br /><br />　　你可以对比着上面测试类中的实现来体会下规定——很简单！而且你在这个测试类中有加入多少个测试方法，就会运行多少个测试方法。 <br /><br />　　四、向前一步 <br /><br />　　学完了HelloWorld，你已经可以编写标准的单元测试用例了。但是还有一些细节，这里还要说明一下。不要急，很快的！ <br />　　另外你是否注意到，上面弹出窗口的一个细节，在绿条下面有Errors、Failures统计。这两者有何区别呢？ <br />　　Failures作为单元测试所期望发生的错误，它预示你的代码有bug，不过也可能是你的单元测试代码有逻辑错误（注意是逻辑错误）。Errors不是你所期待的，发生了Error你可以按照下面的顺序来检查： <br /><br />　　检查测试所需的环境，如：数据库连接 <br /><br />　　检查单元测试代码 <br /><br />　　检查你的系统代码 <br /><br />　　五、成批运行test case <br /><br />　　这是前面提到的JUnit特性之一。它方便于系统单元测试的成批运行。使用起来也是非常简单，先看下使用代码： <br /><br />　　import junit.framework.Test; <br /><br />　　import junit.framework.TestSuite; <br /><br />　　public class TestAll{ <br /><br />　　 public static Test suite(){ <br /><br />　　 TestSuite suite = new TestSuite("TestSuite Test"); <br /><br />　　 suite.addTestSuite( TestSample.class); <br /><br />　　 return suite; <br /><br />　　 } <br /><br />　　} <br /><br />　　这个测试程序的编译、运行，和上面TestSample的方式是一样的。 <br /><br />　　javac TestAll.java <br /><br />　　java junit.swingui.TestRunner TestAll <br /><br />　　怎么样？这样你在suite方法里面添加几个TestCase就会运行几个，而且它也可以添加TestSuite来将小一点的集合加入大的集合中来，方便了对于不断增加的TestCase的管理和维护。 <br /><br />　　你觉得suite方法的作用是不是于java应用程序的main很类似？并且这里的suite必须严格遵守上面的写法！ <br /><br /></div></td></tr></tbody></table><br /><br /><img src ="http://www.blogjava.net/javaboys/aggbug/107774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javaboys/" target="_blank">javaboys</a> 2007-04-01 16:40 <a href="http://www.blogjava.net/javaboys/articles/107774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>