JUnit4使用小结          返回主页

1.JUnit4最佳实践

  1. 测试方法必须使用@test进行修饰
  2. 测试方法必须用public void修饰,不能带任何参数
  3. 新建源码目录,测试类包与被测一致
  4. 测试方法独立不互相依赖
  5. 测试类使用Test做后缀
  6. 测试方法使用test做前缀

    /*
     * 1.测试方法上必须使用@Test进行修饰
     * 2.测试方法必须使用public void 进行修饰,不能带任何的参数
     * 3.新建一个源代码目录来存放我们的测试代码
     * 4.测试类的包应该和被测试类保持一致
     * 5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
     * 6.测试类使用Test作为类名的后缀(不是必须)
     * 7.测试方法使用test作为方法名的前缀(不是必须)
     */
    @Test
    public void testAdd() {
        assertEquals(6, new Calculate().add(3,3));
    }
    
    @Test
    public void testSubtract() {
        assertEquals(3, new Calculate().subtract(5,2));
    }
    
    @Test
    public void testMultiply() {
        assertEquals(4, new Calculate().multiply(2, 2));
    }
    
    @Test
    public void testDivide() {
        assertEquals(3, new Calculate().divide(6, 2));
    }
    

2.测试用例不是证明你是对的,而是证明你不是错的。测试用例对代码逻辑错误无能为力

3.Failure一般由单元测试使用的断言方法判断失败而引起,表示测试点输出与预期不同

4.error表示代码异常,程序存在bug或者代码本身有问题

5.JUnit运行流程

@BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("this is beforeClass...");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("this is afterClass...");
    }

    @Before
    public void setUp() throws Exception {
        System.out.println("this is before...");
    }

    @After
    public void tearDown() throws Exception {
        System.out.println("this is after");
    }

    @Test
    public void test1() {
        System.out.println("this is test1...");
    }

    @Test
    public void test2(){
        System.out.println("this is test2...");
    }
  1. @BeforeClass: 修饰会在所有的方法前调用时执行是静态的,内存中只有一份,适合加载配置文件
  2. @AfterClass:用于清理资源,如关闭DB连接
  3. @Before和@after在每个测试方法前后执行一次
  4. @test:将一个普通方法修饰为一个测试方法

其他注解

  1. @ignore:所修饰的测试方法会被测试运行期忽略
  2. @runwith:可以更改测试运行器,继承org.junit.runner.runner

6.测试套件

  1. 测试套件就是组织测试类一起运行的,写一个作为测试套件的入口类;
  2. 这个类不包含其他方法
  3. 更改测试运行器suiteClass
  4. 将要测试的类作为数组传入到Suite.suitClass

7.参数化测试

  1. 更改默认测试运行器为RunWith
  2. 声明变量来存放预期和结果值
  3. 声明一个返回值为collection的公共静态方法,并使用@parameter进行修饰
  4. 为测试类声明一个带有参数的公共构造函数并在其中为之声明变量赋值