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());
        }
    
    }
    =================================================
  • 相关阅读:
    CF1070F Debate
    P3502 [POI2010]CHO-Hamsters
    CF1421A XORwice
    P2073 送花
    树链剖分边权转化为点权
    球——数学分析,模型构建
    数位dp的模版
    不要62
    智慧题——规律题
    CF551C GukiZ hates Boxes——模拟加二分
  • 原文地址:https://www.cnblogs.com/fengke/p/4800250.html
Copyright © 2011-2022 走看看