JUnit——(二)注解

1. 两种错误:Error和Failure

Error是代码错误

@Test
    publicvoid testAdd() {
        int z=new T().add(5,3);
        assertEquals(8,z);
        int a=8/0;  //这一句是有错误的
    }

Failure是测试失败

@Test
    publicvoid testAdd() {
        int z=new T().add(5,4); //这里修改了数值,把4该为3就正确了 
        assertEquals(8,z);
    }

2. 常用注解:

1. @Test : 测试方法,测试程序会运行的方法,后边可以跟参数代表不同的测试,如(expected=XXException.class) 异常测试,(timeout=xxx)超时测试

@Test(expected=*.class)

在JUnit4.0之前,对错误的测试,我们只能通过fail来产生一个错误,并在try块里面assertTrue(true)来测试。现在,通过@Test元数据中的expected属性。expected属性的值是一个异常的类型

@Test(timeout=xxx):
该元数据传入了一个时间(毫秒)给测试方法,
如果测试方法在制定的时间之内没有运行完,则测试也失败。


2. @Ignore : 被忽略的测试方法

该元数据标记的测试方法在测试中会被忽略。当测试的方法还没有实现,或者测试的方法已经过时,或者在某种条件下才能测试该方法(比如需要一个数据库联接,而在本地测试的时候,数据库并没有连接),那么使用该标签来标示这个方法。同时,你可以为该标签传递一个String的参数,来表明为什么会忽略这个测试方法。比如:@lgnore(“该方法还没有实现”),在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。


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

4. @After : 每一个测试方法之后运行
5. @BeforeClass: 所有测试开始之前运行
6. @AfterClass: 所有测试结束之后运行

例如:

package com.junit4.cc.test;

importstatic org.junit.Assert.*;
importstatic org.hamcrest.Matcher.*;

import org.junit.Test;
import com.junit4.cc.*;

import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.AfterClass;
import org.junit.After;
import org.junit.Ignore;


publicclass TTest {
    
    @BeforeClass  //的所有方法运行之前运行。
    public static void beforeClass(){
        System.out.println("------------beforeClass");
    }
    
    @AfterClass   //在所有方法运行之后运行
    public static void afterClass(){
        System.out.println("-------------afterClass");
    }
    
    @Before   //每个测试方法运行之前运行
    public void before(){
        System.out.println("=======before");
    }
    
    @After   //每个测试方法运行之后运行
    public void after(){
        System.out.println("=======after");
    }

    @Test
    publicvoid testAdd() {
        int z=new T().add(5,3);
        assertEquals(8,z);
        System.out.println("test Run through");
    }
    
    @Test ()
    public void testdivision(){
              System.out.println("in Test Division");

    }

    @Ignore   //表示这个方法是不被运行的
    @Test
    (expected=java.lang.ArithmeticException.class,timeout=100)         //timeout表示要求方法在100毫秒内运行完成,否则报错
    public void testDivide(){
        int z =new T().divide(8,2);
    }
}    

 运行结果如下:

原文地址:https://www.cnblogs.com/lesleysbw/p/6286002.html