JUint4 简单测试代码

=======================测试示例=====================

=======================被测试类=====================
package com.fengke;

import org.junit.Test;

public class ReadNumbers {
    
    private int a;
    private int b;
    static int c;
    static {
        int c=0;
    }
    
    public int max(){
         c = b;
        if(a>b){
            c=a;
        }
        return c;
        
    }

    public ReadNumbers() {
        super();
        // TODO Auto-generated constructor stub
    }

    public ReadNumbers(int a, int b) {
        super();
        this.a = a;
        this.b = b;
    }
    

}
====================== 基本测试======================
package com.test;

import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import com.fengke.ReadNumbers;
/**
 * 测试
 * @author 锋客
 *    
 * @Test:将一个普通的方法修饰成为一个测试方法
 *         @Test(expected=XX.class)
 *         @Test(timeout=毫秒 )
 * @BeforeClass:它会在所有的方法运行前被执行,static修饰
 * @AfterClass:它会在所有的方法运行结束后被执行,static修饰
 * @Before:会在每一个测试方法被运行前执行一次
 * @After:会在每一个测试方法运行后被执行一次
 * @Ignore:所修饰的测试方法会被测试运行器忽略
 * @RunWith:可以更改测试运行器 org.junit.runner.Runner
 *
 *
 *注意:
 * 1.Failure一般由单元测试使用的断言方法判断失败所引起的,这经表示 测试点发现了问题
 * ,就是说程序输出的结果和我们预期的不一样。
 * 2.error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的
 * 一个隐藏的bug
 * 3.测试用例不是用来证明你是对的,而是用来证明你没有错。
 *  
 */

public class NumberTest {
    /*
     * @BeforeClass
     * 在测试方法运行前执行
     * 执行一遍,在整体运行前执行
     * 通常用来对资源的清理,如关闭数据库的连接
     */

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("BeforeClass");
    }
    
    /*
     * @BeforeClass
     * 在测试方法运行后执行
     * 执行一遍,在整体运行后执行
     */

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("AfterClass");
    }
    /*
     * @Before
     * 在测试方法运行前执行
     * 有几个测试,运行几遍
     * 该方法不能是静态的
     */
    @Before
    public  void beforMethod(){
        System.out.println("before");
    }
    /*
     * @After
     * 在测试方法运行后执行
     * 有几个测试,运行几遍
     * 该方法不能是静态的
     */
    @After
    public  void afterMethod(){
        System.out.println("after");
    }
    /*
     * 测试内容
     * 1.测试方法上必须使用@Test进行修饰
     * 2.测试方法必须使用public void 进行修饰,不能带任何的参数
     * 3.新建一个源代码目录来存放测试代码
     * 4.测试类的包应该和被测试类保持一致
     * 5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
     * 6.测试类使用Test作为类名的后缀(不是必须)
     * 7.测试方法使用test作为方法名的前缀(不是必须)
     */
    @Test
    public void testMax1() {
        System.out.println("***************************");
        System.out.println(this.getClass().getName());
        assertEquals(4, new ReadNumbers(2,4).max());
        System.out.println(new ReadNumbers(2,4).max());
        System.out.println("***************************");
    }
    @Test
    public void testMax2(){
        System.out.println("***************************");
        System.out.println(this.getClass().getName());
        System.out.println("***************************");
    }
    /*
     * 对比
     * (timeout=2000)限制时间,防止死循环
     * @Ignore("...")忽略该测试方法,根本不执行,不会运行before和after
     */
    @Ignore("...")
    @Test(timeout=2000)
    public void testWhile1() {
        System.out.println("***************************");
        while(true) {
            System.out.println("run forever...");
        }
        //System.out.println("***************************");
    }
    
    @Test(timeout=50)
    public void testWhile2() {
        System.out.println("***************************");
        while(true) {
            System.out.println("run forever...");
        }
        //System.out.println("***************************");
    }
    /*
     * 对比
     * expected=ArithmeticException.class
     * 异常处理
     */
    @Test(expected=ArithmeticException.class)
    public void testDivide1() {
        assertEquals(3, 6/0);
    }
    @Test
    public void testDivide2() {
        assertEquals(3, 6/0);
    }
    

}
==========================ParameterTest==============
package com.test;

import static org.junit.Assert.*;

import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import com.fengke.ReadNumbers;

@RunWith(Parameterized.class)
public class ParameterTest {

    /*
     * 1.更改默认的测试运行器为RunWith(Parameterized.class)
     * 2.声明变量来存放预期值 和结果值
     * 3.声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰
     * 4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
     */
    int expected =0;
    int input1 = 0;
    int input2 = 0;
    /*
     * @Parameters
     * 静态的方法
     * 
     */
    @Parameters
    public static Collection<Object[]> t() {
        return Arrays.asList(new Object[][]{
                {2,1,2},
                {3,2,2}
        }) ;
    }
    //构造器
    public ParameterTest(int expected,int input1,int input2) {
        this.expected = expected;
        this.input1 = input1;
        this.input2 = input2;
    }

    @Test
    public void test() {
        assertEquals(expected, new ReadNumbers(input1,input2).max());
    }

}
=======================测试套=======================
package com.test;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

import com.fengke.ReadNumbers;
/**
 * 测试套件
 * @author 锋客
 * 
 *
 */


@RunWith(Suite.class)
@Suite.SuiteClasses({Task1.class,Task2.class,Task3.class})
public class SuiteTest {
    /*
     * 1.测试套件就是组织测试类一起运行的
     * 
     * 写一个作为测试套件的入口类,这个类里不包含其他的方法
     * 更改测试运行器Suite.class
     * 将要测试的类作为数组传入到Suite.SuiteClasses({})
     */

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("测试套件开始执行");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("测试套件执行完毕");
    }
    
    //以下内容不会执行
    @Before
    public  void beforMethod(){
        System.out.println("before");
    }
    @After
    public  void afterMethod(){
        System.out.println("after");
    }
    @Test
    public void maxTest(){
        assertEquals(5, new ReadNumbers(5,2).max());
    }

    

}
=================================================
package com.test;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.fengke.ReadNumbers;

public class Task1 {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("Task1开始执行");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("Task1执行完毕");
    }

    @Test
    public void testMax() {
        assertEquals(2, new ReadNumbers(2,2).max());
    }

}
=================================================
package com.test;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.fengke.ReadNumbers;

public class Task2 {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("Task2开始执行");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("Task2执行完毕");
    }

    @Test
    public void testMax() {
        assertEquals(3, new ReadNumbers(3,2).max());
    }

}
=================================================
package com.test;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.fengke.ReadNumbers;

public class Task3 {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("Task3开始执行");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("Task3执行完毕");
    }

    @Test
    public void testMax() {
        assertEquals(4, new ReadNumbers(4,2).max());
    }

}
=================================================

 

posted on 2015-09-11 11:03  锋客person  阅读(346)  评论(0编辑  收藏  举报