zoukankan      html  css  js  c++  java
  • JUnit4使用

    1、导入Junit4jar包:

      Eclipse中在项目上右键点击Bulid Path,然后再点击Add libraries,选择JUnit

    2、初次使用

    首先先创建一个java项目如下:

    Demo.java内容:

    package cn.orlion.demo;
    
    public class Demo {
        
        public int method1(int p1 , int p2){
            
            return p1 + p2;
        }
        
        public int method2(int p1 , int p2){
            
            return p1 - p2;
        }
        
        public int method3(int p1 , int p2){
            
            return p1 * p2;
        }
    }

    然后在src上点击右键添加一个source folder命名为test,在test下创建包cn.orlion.demo(包名要与要测试的包名一致),然在在此包右键new一个JUnit Test Case,命名为DemoTest。

    写测试类时有一些规范需要遵守:

      (1)测试方法上必须使用@Test进行修饰(2)测试方法必须用public void修饰不能带参数(3)需要新建一个源代码目录来存放测试代码(4)测试类的包必须要与被测试类包名一致(5)测试单元中的每个方法必须可以独立测试,方法间不能存在依赖(6)测试类使用Test作为后缀(7)测试方法使用test作为前缀

    代码如下所示:

    package cn.orlion.demo;
    
    import static org.junit.Assert.*;
    
    import org.junit.Test;
    
    public class DemoTest {
    
        @Test
        public void testMethod1(){
            
            assertEquals(3 , new Demo().method1(2 , 1));
        }
        
        @Test
        public void testMethod2(){
            
            assertEquals(1 , new Demo().method2(2 , 1));
        }
        
        @Test
        public void testMethod3(){
            
            assertEquals(2 , new Demo().method3(2 , 1));
        }
    
    }

    现在的项目结构如图所示

    在DemoTest.java类右键点击Run As -> JUnit Test结果如下所示:

    (Failures一般是由测试方法中断言引起,这表示测试点出现了问题,证明被测试的方法返回的结果与我们预期的不一样

    Errors一般是由被测试方法或者是测试方法中存在异常导致。)

    状态条为绿色三个方法全部测试成功

    3、JUnit运行流程

    (1)@BeforeClass修饰的方法会在所有方法执行前执行,该方法是静态的,所以当测试类被加载后就会运行它,在内存中只会存在一份,适合加载配置文件

    (2)@AfterClass修饰符修饰的方法会在所有方法执行后执行,通常用来清理资源,比如关闭流

    (3)@Before和@After会在每个测试方法执行前后执行一次。

    4、JUnit常用注解

    (1)@Test

      @Test有个expected属性和timeout属性(@Test(expected=NullPointerException.class),@Test(timeout=1000))

      expected属性可以捕获测试方法和被测试方法中预期抛出的异常,timeout限定方法执行的时间

    (2)@Ignore

      @Ignore修饰的方法不会被执行,可以@Ignore("此方法被忽略")做一个注释:此方法被忽略

    (3)@RunWith可以更改测试运行器org.junit.runner.Runner

    5、测试套件

      随着项目功能的逐渐完善我们的测试类也会越来越多,测试的时候不能一个一个的去执行,于是有了测试套件,也就是在一个入口类中包含若干个测试类,然后只要执行该入口类就可以执行其包含的若干个测试类

    入口类必须是个空类,如下:

    import org.junit.runner.RunWith;

    import org.junit.runners.Suite;

    @RunWith(Suite.class)
    @Suite.SuiteClasses({DemoTest.class,DemoTest1.class})
    public class SuiteTest {

    }

    6、JUnit参数化设置

      在测试中很多测试代码基本上差不多,所以可以采用参数化设置

    import static org.junit.Assert.assertEquals;
    
    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;
    
    // 第一步:更改测试运行器
    @RunWith(Parameterized.class)
    public class ParameterTest {
        // 第二步:声明变量来存放预期值与输入值
        int expected = 0;
        int input1 = 0;
        int input2 = 0;
    
        // 第三步:声明一个返回值为Collection的公共静态方法,使用@Parameters修饰
        @Parameters
        public static Collection<Object[]>t(){
            
            return Arrays.asList(new Object[][]{
                {3,1,2},
                {1,2,1},
                {2,2,1}
            });
        }
        
        // 第四步:为测试类声明一个带参数的公共构造函数,并在其中为声明变量赋值
        public ParameterTest(int expected , int input1 , int input2){
            
            this.expected = expected;
            this.input1 = input1;
            this.input2 = input2;
        }
        
        // 第五步:进行测试
        @Test
        public void testMethod1(){
            
            assertEquals(expected , new Demo().method1(input1 , input2));
        }
    }
  • 相关阅读:
    变色DNA(最短路思维题)
    Clairewd’s message(哈希模板+)
    Built(最小生成树+构图离散化)
    Palindrome Degree(hash的思想题)
    字符串哈希算法(以ELFHash详解)
    Making Genome in Berland (DFS+思维)
    统计难题(字典树模板)
    Buy Tickets(线段树单点更新,逆向思维)
    fPzByjvwjL
    Beauty of Array ZOJ
  • 原文地址:https://www.cnblogs.com/orlion/p/4996148.html
Copyright © 2011-2022 走看看