Junit学习

 Junit 的几种注解:

  1.@Test: 测试方法

    a)(expected=XXException.class)如果程序的异常和XXException.class一样,则测试通过
    b)(timeout=100)如果程序的执行能在100毫秒之内完成,则测试通过

  2.@Ignore: 被忽略的测试方法:加上之后,暂时不运行此段代码

  3.@Before: 每一个测试方法之前运行

  与@BeforeClass的区别在于,@Before不止运行一次,它会在每个用例运行之前都运行一次。主要用于一些独立于用例之间的准备工作。比如两个用例都需要读取数据库里的用户A信息,但第一个用例会删除这个用户A,而第二个用例需要修改用户A。那么可以用@BeforeClass创建数据库连接。用@Before来插入一条用户A信息。
注意:必须是public void,不能为static。不止运行一次,根据用例数而定。

  4.@After: 每一个测试方法之后运行

  5.@BeforeClass: 方法必须必须要是静态方法(static 声明),所有测试开始之前运行,注意区分before,是所有测试方法

  当我们运行几个有关联的用例时,可能会在数据准备或其它前期准备中执行一些相同的命令,这个时候为了让代码更清晰,更少冗余,可以将公用的部分提取出来,放在一个方法里,并为这个方法注解@BeforeClass。意思是在测试类里所有用例运行之前,运行一次这个方法。例如创建数据库连接、读取文件等。 方法名可以任意,但必须是public static void,即公开、静态、无返回。这个方法只会运行一次。

  6.@AfterClass: 方法必须要是静态方法(static 声明),所有测试结束之后运行,注意区分 @After

  7.@Runwith
   
  8.@Parameters
  用于使用参数化功能。
 
首先要分清几个概念:测试方法、测试类、测试集、测试运行器。
 
其中测试方法就是用@Test注解的一些函数。测试类是包含一个或多个测试方法的一个**Test.java文件,测试集是一个suite,可能包含多个测试类。测试运行器则决定了用什么方式偏好去运行这些测试集/类/方法。
 
而@Runwith就是放在测试类名之前,用来确定这个类怎么运行的。也可以不标注,会使用默认运行器。
 
常见的运行器有:
 
1. @RunWith(Parameterized.class) 参数化运行器,配合@Parameters使用junit的参数化功能
   进行单元测试的时候,通常一个方法需要好几个case进行测试,Junit提供参数化便于我们对方法进行多种参数的组合测试
2.@RunWith(Suite.class)
@SuiteClasses({ATest.class,BTest.class,CTest.class})
 
测试集运行器配合使用测试集功能
 
3.@RunWith(JUnit4.class)
 
junit4的默认运行器
 
4.@RunWith(JUnit38ClassRunner.class)
 
用于兼容junit3.8的运行器
 
5.一些其它运行器具备更多功能。例如@RunWith(SpringJUnit4ClassRunner.class)集成了spring的一些功能

Junit4包含下面4中测试运行器:
运行器 目的
org.junit.internal.runners.JUnit38ClassRunner 为了向后兼容Junit3.8的运行器
org.junit.runners.JUnit4 Junit4的测试运行器
org.junit.runners.Parameterized 可以使用不同参数来运行相同测试集的运行器
org.junit.runners.Suite 包含不同测试的容器

 

编写测试类的原则: 

    ①测试方法上必须使用@Test进行修饰

        ②测试方法必须使用public void 进行修饰,不能带任何的参数

        ③新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开

        ④测试类所在的包名应该和被测试类所在的包名保持一致

        ⑤测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖

        ⑥测试类使用Test作为类名的后缀(不是必须)

        ⑦测试方法使用test作为方法名的前缀(不是必须)

原文地址:https://www.cnblogs.com/ZTPX/p/10075910.html