1、测试类无需继承任何类,只需在被测试的方法前加上注解@Test(全名为org.junit.Test) 2、测试方法必须是public void *(),即方法名可以随便命名但最好以test开头 3、junit4.x也有junit3.8的setUp、tearDow的功能,它对应的注解分别是 @Before 、@After,其初始化和销毁资源的方法名可以随便命名,但必须是public void且无参 4、junit3.8的TestCase不存在所有测试用例执行之前或执行之后的操作方法。而在junit4.x中出现了这样的注解,分写是@BeforeClass 和 @AfterClass,它在整个测试类里只执行一次,而不像@Before 、@After那样在每个测试方法执行前或执行后执行。 5、被@BeforeClass 和 @AfterClass注解的方法的命名必须是public static void *() 6、junit4.x异常处理:@Test(expected=异常类型.class);将异常throws测试方法,让junit处理,而非junit3.8中的在测试方法内处理,相比3.8要简洁得多。 7、@Test(timeout=毫秒数),它用于简单的性能测试,表示执行该测试方法必须在此时间内完成,否则该方法测试失败。(不推荐使用,最好使用性能测试框架,因为junit只是单元测试框架) 8、同时被注解Test、Ignore的测试方法,将被junit4.x忽略掉 9、测试运行器使用方法:(目的就是为了提供测试效率,可以一同执行多个测试类) A、创建一个空类作为测试套件的入口 B、使用org.junit.runner.RunWith 和 org.junit.runners.Suite.SuiteClasses修饰这个类 C、将org.junit.runners.Suite作为参数传递给RunWith, 以提示Junit为此类使用套件运行 器执行 D、将需要放入此测试套件的测试类组成数组作为SuiteClasses的参数,该参数同样可以是测试套件类,即套件包括套件 E、保证这个空类使用public修饰,而且存在公开的不带任何参数的构造函数 10、为每个包创建一个测试套件,这个测试套件包括该包的所有测试类,同样为另外的包也创建一个测试套件,最后创建一个总的测试套件,该套件包括每个包的测试的套件。 11、参数化测试要点: A、测试类必须被Parameterized测试运行器注解修饰 B、准备数据。数据的准备需要在一个方法中进行,该方法要满足一定要求: 1)该方法必须被Parameters注解修饰 2)该方法必须为public static 3)该方法必须返回Collection类型 4)该方法的名字不作要求 5)该方法没有参数 C、 方法体内准备的数据必须是一个Object二维数组,并运用Arrays.asList转换成Collections D、声明构造函数。该构造函数的参数必须和前面静态方法的二维数组一致,通过带参构造把数 据一组一组地传给该类的成员变量,以供测试方法使用。这样每个对象都能得到一组数组。 12、参数化测试适合测试大量数据(相同的输入及输出条件)但只适合某一个测试类的某一个方法 13、如何测试私有方法:得到类的Class对象;用Class对象的getDeclaredMethod得到方法得到对应的Method对象;调用Method对象的setAccessible(true),设置可以访问该私有方法;调用Method对象的Invoke方法执行调用。 14、不要为了测试而修改源代码(如把私有方法改为共有方法),测试出 bug才去修改源代码 15、Interger.TYPE==int.class Interger.class!= int.class 16、测试套件不要有循环包含关系否则你就会一直测试下去,O(∩_∩)O哈哈~ 17、junit将测试失败的情况分为两种:failure和error。Failure是由断言引起; error有代码异常引起,可能是测试代码本身产生也有可能是被测试的代码引起的 |
【原】Junit4.x学习笔记
最新推荐文章于 2024-11-04 19:44:07 发布