zoukankan      html  css  js  c++  java
  • JUnit4简易教程

    1.下载JUnit4的jar包,在项目上右键选properties->Java Build Path ->Libraries->Add library添加刚才的jar包

    2.在项目中找一个要测试的类(或者在其他包中建立,再选要测试的类),右键New-> JUnit Test Case

    3.如果是在要测试的类上new则Class under test直接会选中当前类,否则要自己手动选择要测试的类.

    4.点击下一步则勾选要测试的方法,下一步则生成测试类.

    5.点击生成的测试类,run as -> JUnit Test则可以进行测试.

    下面讲解一下测试类中的一些注释的作用.

    @Test标注

    假设要测试的类是ClassA.java,生成的测试文件是ClassATest.java

    我们要测试ClassA中的funcA方法,则我们在ClassATest.java中要先创建一个ClassA的对象

    private static ClassA classa= new ClassA ();

    在测试类ClassATest.java中的测试方法TestfuncA之前,我们要先添加@Test ,表示这个是测试函数,并且TestfuncA必须无返回值.

    public void TestfuncA(){
      assertEquals(2,classa.funcA()); //如果classa.funcA()的结果是2则正确,否则错误.
    }

    @Test的作用就是声明这个是测试方法.

    @Ignore标注

    假设测试类ClassATest.java中的测试方法TestfuncB的测试方法还没写好,不想测试的时候运行他,则可以用该标注来跳过.

    @Before

    我们想对ClassA做单元测试,但是可能里面的funcA运行之后,会影响funcB的值(如改变了全局变量).这个时候就要在测试类ClassATest.java中定义

    一个还原初始值的方法,并在前面添加标注@Before,表示在每个单元测试之前都执行该方法.

    @After

    作用和@Before是一样的,只是运行的时机不同.

    @BeforeClass 和 @AfterClass

    原理和@Before和@After是一样的,只是运行的时机是 测试用例初始化时 和 当所有测试执行完毕之后.

    @Test(timeout = 10000)

    设置该方法的超时事件,防止测试的方法出现死循环然后一直卡住.

    @Test(expected = ArithmeticException.class)

    如果测试结果抛出了ArithmeticException异常则是正确的,否则是错误的.

    @RunWith(XXXX.class)

    指定测试代码提交给JUnit框架后用哪个运行器来执行,默认是TestClassRunner.class,但是要注意这个标注是用来修饰类的,不是用来修饰方法的.如果指定了,

    整个类下面所有的方法都是用这个运行器.

    @Suite.SuiteClasses

    当我们写了很多很多个测试类,不想每个测试类单独运行,而是打包一次测试,则可以用这个标注.

    @Suite.SuiteClasses({ClassATest.class,ClassBTest.class}),但是要注意,此时的运行器必须指定@RunWith(Suite.class)

    @Parameters

    当被测试的ClassA里面的funcA可以有多种输入,并且每种输入会有不要同的输出结果.我们想一次输入不同的参数,然后测试不同的结果.而不是为每种参数情况

    写一个测试方法.这个时候就可以用Parameters的标注.

    但是我们必须要为测试类ClassATest.java写一个构造方法

    public Test(int expected,int input1,int input2)//构造方法,为各个参数赋值,Test中对这3个变量的定义在此省略。
     {
        this.expected=expected;//希望的结果
        this.input1=input1;//输入1
        this.input2=input2;//输入2
      }

    并且用标注Parameters

    @Parameters
     public  static  Collection  prepareData()
     {
     Object[][] object ={{3,1,2},{-4,-1,-3},{5,0,5}};//对应构造方法中的3个参数
     return Arrays.asList(object);//数组转化成集合形式。
     
     }

    此时,在测试函数中就可以用了

     @Test
     public void  TestfuncA()
     {
      assertEquals(this.expected,classa.funcA(this.input1, this.input2));//注意是调用的成员变量。
      
     }
  • 相关阅读:
    sql2slack alash3al 开源的又个轻量级工具
    pgspider fetchq 扩展docker镜像
    godns 集成coredns 的demo
    godns 简单dnsmasq 的dns 替换方案
    aviary.sh 一个基于bash的分布式配置管理工具
    使用coredns 的template plugin实现一个xip 服务
    nginx 代理 coredns dns 服务
    基于nginx proxy dns server
    几个不错的geodns server
    spring boot rest api 最好添加servlet.context-path
  • 原文地址:https://www.cnblogs.com/linl/p/4035319.html
Copyright © 2011-2022 走看看