zoukankan      html  css  js  c++  java
  • 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());
        }
    
    }
    =================================================
  • 相关阅读:
    垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
    自考感悟,话谈备忘录模式
    [每日一题] OCP1z0-047 :2013-07-26 alter table set unused之后各种情况处理
    Java实现 蓝桥杯 算法提高 p1001
    Java实现 蓝桥杯 算法提高 拿糖果
    Java实现 蓝桥杯 算法提高 拿糖果
    Java实现 蓝桥杯 算法提高 求arccos值
    Java实现 蓝桥杯 算法提高 求arccos值
    Java实现 蓝桥杯 算法提高 因式分解
    Java实现 蓝桥杯 算法提高 因式分解
  • 原文地址:https://www.cnblogs.com/fengke/p/4800250.html
Copyright © 2011-2022 走看看