测试驱动开发WithJUnit(二).doc_第1页
测试驱动开发WithJUnit(二).doc_第2页
测试驱动开发WithJUnit(二).doc_第3页
测试驱动开发WithJUnit(二).doc_第4页
测试驱动开发WithJUnit(二).doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章:JUnit测试套件: 在第一节中简单的介绍了JUnit的使用,但是每次运行测试类时,该测试类的所有方法全部都被测试一遍,如果想单独测试某个方法还是比较麻烦的。但是可以利用测试套件来解决这个问题。 下面我们先更改CalculateUtilTest向里面增加一个构造方法 1. import junit.framework.TestCase; 2. public class CalculateUtilTest extends TestCase 3. 4. 5. public CalculateUtilTest(Stringname) /1行 6. 7. super (name); 8. 9. 10. 其余方法省略 11. 代码解释:1行:自定义构造方法,里面有一个String参数,在该方法中调用父类的构造方 法。 构造一个类来操作测试套件: 1. import junit.framework.*; 2. public class MainTest 3. 4. public static Testsuite() /1行 5. 6. TestSuitesuite= new TestSuite(); /2行 7. 8. /添加测试testDivision方法 9. suite.addTest( new CalculateUtilTest( testDivision ); /3行 10. 11. /添加测试testCreate方法 12. suite.addTest( new CalculateUtilTest( testCreate ); 13. return suite; 14. 15. 16. public static void main(Stringargs) 17. 18. /执行测试 19. junit.textui.TestRunner.run(suite(); /4行 20. 21. 代码解释: 1行:静态方法,返回Test类对象。该方法主要是构造TestSuite类对象,然后向 其中加入你想要测试的方法。 2行:构造TestSuite类对象 3行:向TestSuite对象中添加一个要测试的方法。 new CalculateUtilTest(testDivision)表示测试CalculateUtilTest类的 testDivision方法。 4行:运行该测试套件 上面的方法可以非常方便地添加自己所需要的方法,如果是用该方法,就要在编写测试方法时将其加入测试套件中。如果你觉得很麻烦,那么就使用下列一行代码一次测试一个类吧。 1. public static void main(Stringargs) 2. 3. junit.swingui.TestRunner.run(CalculateUtilTest. class ); 4. 或者在suite方法中添加所要测试的类也可以 1. public static Testsuite() 2. 3. TestSuitesuite= new TestSuite(); 4. suite.addTestSuite(CalculateUtil. class ); 5. return suite; 6. 尽管上面的测试套件提供了你所需要的各种粒度测试方法(按照方法名,测试整个类),但是有个问题是,当我们面临一大堆测试代码时,很容易忘记将你的测试类加入到一个测试套件中去。一个好的解决方法是让java程序扫描你的classpath中的全部类,搜集所需要的测试类然后逐一执行。这样做的好处就是不会有测试被遗漏,但缺点是某些测试,你并不希望每次都运行它们。具体做法如下:先编写收集测试类的功能,并将全部测试类装入测试套件。代码如下 1. import java.lang.reflect.Modifier; 2. import java.util.*; 3. import junit.runner.*; 4. import junit.framework.*; 5. public class SuiteBuilder 6. 7. /将所有的测试类都加入TestSuite中 8. public Testsuite() 9. 10. TestSuitesuite= new TestSuite(); 11. 12. Listlist=getTestClassNames(); 13. for ( int i= 0 ;ilist.size();i+) 14. 15. suite.addTestSuite(createClass(list.get(i).toString(); 16. 17. return suite; 18. 19. 20. /获取全部测试类的类名 21. public ListgetTestClassNames() 22. 23. TestCollectorcollector= new ClassPathTestCollector() 24. 25. public boolean isTestClass(StringclassFileName) 26. 27. if (! super .isTestClass(classFileName) 28. return false ; 29. StringclassName=classNameFromFile(classFileName); 30. Classclazz=createClass(className); 31. return TestCase. class .isAssignableFrom(clazz)&isConcrete(clazz); 32. 33. ; 34. return Collections.list(collector.collectTests(); 35. 36. /判断该类是否是接口或抽象类 37. private boolean isConcrete(Classclazz) 38. 39. if (clazz.isInterface() 40. return false ; 41. int modifiers=clazz.getModifiers(); 42. return !Modifier.isAbstract(modifiers); 43. 44. /加载该类 45. private ClasscreateClass(Stringname) 46. 47. try 48. 49. return Class.forName(name); 50. 51. catch (ClassNotFoundExceptione) 52. 53. return null ; 54. 55. 56. /判断该类是否是测试类:标准如下 57. /1:类文件以.class结束 58. /2:类名不能有$,防止内部类 59. /3:类名必须以Test单词结尾 60. protected boolean isTestClass(StringclassFileName) 61. 62. return classFileName.endsWith( .class )&classFileName.indexOf($) 0 ; 64. 65. 注:注释都比较详细,在这里就不多解释了。 然后编写测试套件类: 1. package com; 2. public class MainTest

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论