随笔 - 251  文章 - 504  trackbacks - 0
<2006年11月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

本博客系个人收集材料及学习记录之用,各类“大侠”勿扰!

留言簿(14)

随笔分类

收藏夹

My Favorite Web Sites

名Bloger

非著名Bloger

搜索

  •  

积分与排名

  • 积分 - 197522
  • 排名 - 289

最新评论

3.6、JUnit一个实例

在控制台中简单的范例如下:
1、写个待测试的Triangle类,创建一个TestCase的子类ExampleTest:
2、 ExampleTest中写一个或多个测试方法,断言期望的结果(注意:以test作为待测试的方法的开头,这样这些方法可以被自动找到并被测试)
3、 ExampleTest中写一个suite()方法,它会使用反射动态的创建一个包含所有的testXxxx方法的测试套件:
4、 ExampleTest可以写setUp()、tearDown()方法,以便于在测试时初始化或销毁测试所需的所有变量和实例。(不是必须的)

5、写一个main()方法以文本运行器或其它GUI的方式方便的运行测试

6、编译ExampleTest,执行测试。

3.7、Eclipse中JUnit的使用

Eclipse自带了一个JUnit的插件,不用安装就可以在你的项目中开始测试相关的类,并且可以调试你的测试用例和被测试类。

使用步骤如下:

1、新建一个测试用例,点击“File->New->Other…菜单项,在弹出的“New”对话框中选择”Java->JUnit”,下的TestCase 或TestSuite,就进入“New JUnit TestCase”对话框

2、在“New JUnit TestCase”对话框填写相应的栏目,主要有Name(测试用例名),SuperClass(测试的超类一般是默认的junit.framework.TestCase),Class Under Test(被测试的类),Source Folder(测试用例保存的目录),Package(测试用例包名),及是否自动生成main,setUp,tearDown方法。

3、如果点击下面的”Next>”按钮,你还可以直接勾选你想测试的被测试类的方法,Eclipse将自动生成与被选方法相应的测试方法,点击“Fishish”按钮后一个测试用例就创建好了。

4、编写完成你的测试用例后,点击“Run”按钮就可以看到运行结果了。

3.8、JUnit的扩展应用

以下罗列了些JUnit的扩展应用:

JUnit + HttpUnit=WEB功能测试工具
JUnit + hansel =代码覆盖测试工具
JUnit + abbot =界面自动回放测试工具
JUnit + dbunit =数据库测试工具
JUnit + junitperf=性能测试工具

3.9、一些使用JUnit经验

不要用TestCase的构造函数初始化,而要用setUp()和tearDown()方法。
不要依赖或假定测试运行的顺序,因为JUnit利用Vector保存测试方法。所以不同的平台会按不同的顺序从Vector中取出测试方法。
避免编写有副作用的TestCase。例如:如果随后的测试依赖于某些特定的交易数据,就不要提交交易数据。简单的回滚就可以了。
当继承一个测试类时,记得调用父类的setUp()和tearDown()方法。
将测试代码和工作代码放在一起,一边同步编译和更新。
测试类和测试方法应该有一致的命名方案。如在工作类名前加上test从而形成测试类名。
确保测试与时间无关,不要依赖使用过期的数据进行测试。导致在随后的维护过程中很难重现测试。
如果你编写的软件面向国际市场,编写测试时要考虑国际化的因素。不要仅用母语的Locale进行测试。
尽可能地利用JUnit提供地assert/fail方法以及异常处理的方法,可以使代码更为简洁。
测试要尽可能地小,执行速度快。


参考资料与附件

1. http:// www.junit.org JUnit官方网站

2. http://bbs.51cmm.com 的测试论坛

3. http://www.uml.org.cn 的软件测试专栏

4. 单元测试 《程序员》 2002年7期

5. JUnit设计模式分析 《程序员》2003年6期

6. 《软件测试和JUnit实践》

7. 附件Triangle.java 一个要测试的类


Triangle.java

/**

* this is Triangle class

* @author liujun

*/

public class Triangle

{

//定义三角形的三边

protected long lborderA = 0;

protected long lborderB = 0;

protected long lborderC = 0;

 

//构造函数

public Triangle(long lborderA,long lborderB,long lborderC)

{

this.lborderA = lborderA;

this.lborderB = lborderB;

this.lborderC = lborderC;

}

/**

* 判断是否是三角形

* 是返回ture;不是返回false

*/

public boolean isTriangle(Triangle triangle)

{

boolean isTrue = false;

//判断边界,大于0小于200,出界返回false

if((triangle.lborderA>0&&triangle.lborderA<200)

&&(triangle.lborderB>0&&triangle.lborderB<200)

&&(triangle.lborderC>0&&triangle.lborderC<200))

{

//判断两边之和大于第三边

if((triangle.lborderA<(triangle.lborderB+triangle.lborderC))

&&(triangle.lborderB<(triangle.lborderA+triangle.lborderC))

&&(triangle.lborderC<(triangle.lborderA+triangle.lborderB)))

isTrue = true;

}

return isTrue;

}

 

/**

* 判断三角形类型

* 等腰三角形返回字符串“等腰三角形”;

* 等边三角形返回字符串“等边三角形”;

* 其它三角形返回字符串“不等边三角形”;

*/

public String isType(Triangle triangle)

{

String strType = "";

// 判断是否是三角形

if(this.isTriangle(triangle))

{

//判断是否是等边三角形 if(triangle.lborderA==triangle.lborderB&&triangle.lborderB==triangle.lborderC)

strType = "等边三角形";

//判断是否是不等边三角形

else if((triangle.lborderA!=triangle.lborderB)&&

(triangle.lborderB!=triangle.lborderC)&&

(triangle.lborderA!=triangle.lborderC))

strType = "不等边三角形";

else

strType="等腰三角形";

}

return strType;

}

}

8. 附件ExampleTest.java 一个测试用例类

ExampleTest.java

import junit.framework.*;

/**

* Some tests.

*

*/

public class ExampleTest extends TestCase {

public Triangle triangle;

//初始化

protected void setUp() {

triangle=new Triangle(10,2,9);

}

 

public static Test suite() {

return new TestSuite(ExampleTest.class);

}

//函数isTriangle()的测试用例

public void testIsTriangle() {

assertTrue(triangle.isTriangle(triangle));

}

//函数isType()的测试用例

public void testIsType()

{

assertEquals("这次测试",triangle.isType(triangle),"不等边三角形");

}

 

//执行测试

public static void main (String[] args) {

//文本方式

junit.textui.TestRunner.run(suite());

//Swingui方式

//junit.swingui.TestRunner.run(suite().getClass());

//awtui方式

//junit.awtui.TestRunner.run(suite().getClass());

 

}

}

posted on 2006-11-26 15:16 matthew 阅读(466) 评论(0)  编辑  收藏 所属分类: 软件测试技术

只有注册用户登录后才能发表评论。


网站导航: