JUnit in java 真正的测试用例实战
2011-04-01 09:19
274 查看
单元测试基础 当今软件测试十分盛行时,本人通过项目实践和个人亲身体会浅谈单元测试,本人一直坚持 “ 用代码说话的原则 ” ,同时也希望个人能给出宝贵意见,共同探讨、共同进步,为中国软件事业有更大的发展共同奋斗! 最早我们项目组开发的项目时,写代码都是从底层一直写到表现层到 jsp ,然后开发人员在 web 层调试页面,近乎 98 %都会报一大堆 exception, 然后再在代码中加断点一步一步查到底哪一层代码出现问题 ……, 比较好点做法就是在各个类中加上 main 方法测试,但总体很不理想,给 web 层开发人员的调试和质量控制人员带来繁重的工作压力;使用单元测试后,针对每一个方法都做严格的把关,大大减少调试的时间;同时质量控制人员返回过来的 bug 少了近 60 %,现在对于开发人员写测试用例非常熟练,并且本人根据实际情况对测试用例做了点小小改动(这部分主要在后面代码中详述),带来很好的效果! 单元测试到底给实际开发带来什么好处那? ( 1 ) (1) 首先对于开发人员来说大大减少调试工作的时间,同时也规范了对于代码安全管理(我们知道那些方法是可以调用的); ( 2 ) (2) 对于整个项目来说,有了完整的测试,保证项目最后交付测试有了可靠依据; ( 3 ) (3) 对于测试人员大大减少 bug 的反馈; ( 4 ) (4) 对于项目经理整个项目达到很好的可控; ( 5 ) (5) 最主要的完整的单元测试给后期维护人员带来很大的便捷! 单元测试好处可能还有很多,但本人只能理解和感悟这么多 , 希望观者补充! 单元测试配置: 我将使用 eclipse + myEclopse 给大家介绍关于 JUNIT 的环境的简单配置;右键点击项目选择 “ 属性 ” ,在弹出窗口中到环境变量中添加 junit.jar 包,这样下一步我们就可以进行单元测试了; 使用 eclipse 快速开发 test Case : 如下图:右键选择你要测试的类,在新建中点击 “JUnit 测试用例 ” , 弹出对话框,配置测试名称和根目录,添加注释等,再点击 “ 下一步 ” 到下图: 选择你要测试类中的方法,点击完成!便生成测试类的基本框架,如下代码,我们以对一个 DAO 类测试为例: /**/ /* * Copyright reserved 2005 by XXXXCo. Ltd. * Author : Fu wei Date : 2006-9-4 */ import junit.framework.TestCase; /** */ /** * @author Fu wei */ public class OrgTypeDAOTest extends TestCase ... { /** */ /** * @param arg0 */ public OrgTypeDAOTest(String arg0) ... { super (arg0); } /**/ /* * @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception ... { super .setUp(); } /**/ /* * @see junit.framework.TestCase#tearDown() */ protected void tearDown() throws Exception ... { super .tearDown(); } /** */ /** * 主函数 * @param args */ public static void main(String[] args) ... { TestRunner.run(OrgTypeDAOTest . class ); } /** */ /** * { @link OrgTypeDAO#getOrgTypeList()} 的测试方法。 */ public final void testGetOrgTypeList() ... { fail(" 尚未实现 "); // TODO } /** */ /** * { @link OrgTypeDAO#insertOrgTypeInfo(com.zhjy.mltx.vo.OrgTypeVO)} 的测试方法。 */ public final void testInsertOrgTypeInfo() ... { fail(" 尚未实现 "); // TODO } /** */ /** * { @link OrgTypeDAO#deleteOrgTypeInfo(java.lang.String)} 的测试方法。 */ public final void testDeleteOrgTypeInfo() ... { fail(" 尚未实现 "); // TODO } /** */ /** * { @link OrgTypeDAO#updateOrgTypeInfo(com.zhjy.mltx.vo.OrgTypeVO)} 的测试方法。 */ public final void testUpdateOrgTypeInfo() ... { fail(" 尚未实现 "); // TODO } /** */ /** * { @link OrgTypeDAO#getOrgTypeInfoById(java.lang.String)} 的测试方法。 */ public final void testGetOrgTypeInfoById() ... { fail(" 尚未实现 "); // TODO } /** */ /** * { @link OrgTypeDAO#isRepeatOrgTypeInfo(java.lang.String)} 的测试方法。 */ public final void testIsRepeatOrgTypeInfoString() ... { fail(" 尚未实现 "); // TODO } /** */ /** * { @link OrgTypeDAO#isRepeatOrgTypeInfo(com.zhjy.mltx.vo.OrgTypeVO)} 的测试方法。 */ public final void testIsRepeatOrgTypeInfoOrgTypeVO() ... { fail(" 尚未实现 "); // TODO } /** */ /** * { @link OrgTypeDAO#getFlatOrgIdByName(java.lang.String)} 的测试方法。 */ public final void testGetFlatOrgIdByName() ... { fail(" 尚未实现 "); // TODO } } JUnit 单元测试一共要注意一下几点: ( 1 ) import junit.framework.TestCase 和 junit.textui.TestRunner ; ( 2 )继承 junit.framework.TestCase ; ( 3 )自行添加一个 main 方法 中调用 TestRunner.run( 测试类名 .class); ( 4 )有一个调用 super(String) 的构造函数; 以上都是 JUnit 必有的特征,除以上外,我们发现有许多以 test 开头的方法,而这些方法正是我们要测试的方法, Junti 测试其实采用的是断言的方式,只要我们在所有 test 开头中的方法对数据添加断言方法,同时提供很多断言的方法,
JUnit 测试如下图: 在方法页面中点击右键在 “ 调试方式 ” 或 “ 运行方式 ” 中点击 “ JUnit 测试 ” ,就运行测试类! 在执行测试类时,执行的大概过程 : ( 1 )先执行构造方法 public OrgTypeDAOTest(String arg0) ; ( 2 )再执行初始化数据方法 protected void setUp() ; ( 3 )再执行以 test 开头的测试方法; ( 4 )最后执行 protected void tearDown() 方法清理对象; 如果测试失败或者错误,将会显示一个红色的亮条;如果测试通过将显示绿色亮条;如下图 |
相关文章推荐
- JUnit in java 真正的测试用例实战
- 【JAVA并发编程实战】10、并发程序的测试
- ACM输入输出--多组测试用例--C、C++、Java
- java8 stream API学习测试用例
- 微信公众账号第三方平台全网发布源码(java)- 实战测试通过
- Java NIO 之 ByteBuffer 测试用例
- Ant学习-002-ant 执行 TestNG 测试用例时 [testng] java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 解决方案
- Java程序的单元测试-分析并获取测试用例
- 软件测试(三)—— 参数化测试用例(Nextday.java)
- 【软件性能测试-LoadRunner实战技能 11】== LoadRunner Java 九九乘法表
- java8 日期time测试用例以及结果分析
- appium+java的一个测试用例
- Unit in java单元测试用例实战
- RabbitMQ基本功能测试用例(Java实现)
- 根据测试用例的java源码自动生成TestNG的XML文件
- 使用java证书开发包,测试开发用例
- ACM输入输出--多组测试用例--C、C++、Java
- 剑指Offer算法题JAVA版21-30题(全是个人写的非官方,只供参考和自己复习,测试用例都通过了。)
- ActiveMQ使用步骤--- 开发测试环境搭建及Java用例
- JavaWebFrame 中控制器的一些问题和测试用例