Test

Junit单元测试入门(主要是Junit4)

2018-05-15  本文已影响0人  不可分类者bubble

一、引入Junit4

在项目pom.xml文件中加入截图内容

pom文件加入配置

二、基本fixture:Junit基本注解功能的使用

1、@BeforeClass // 表示在类中的任意public static void方法执行之前执行,在类中只运行一次,必须声明成public static

2、@AfterClass //表示在类中的任意public static void方法执行之后执行,在类中只运行一次,必须声明成public static

3、@Before //表示在任意使用@Test注解标注的public void方法执行之前执行,在每个测试方法之前都会运行一次,只需声明成public

@before常常配合public void setUp() throws Exception { }方法使用,可用来初始化数据,在所有类执行之前,初始化所有为某一个状态(比如说计算器方法,每个方法执行前都置为0)

4、@After //表示在任意使用@Test注解标注的public void方法执行之后执行,在每个测试方法之前都会运行一次,只需声明成public

5、@Test //使用该注解标注的public void方法,表示为一个测试方法。这是最常用的

6、@Ignore("not ready yet")//表示该方法尚未完成,执行的时候忽略该方法

测试代码

三、高级fixture

1、限时测试(@Test(timeout=1000))......表示超过这个时间(1s)后,该测试方法会被强行终止,且系统会告知你错误的原因的超时引起的。这个方法可以解决死循环的问题

2、异常测试(@Test(expected  =  ArithmeticException. class ))前面的exception需要自行根据实际情况写具体的异常。改注解可以检测程序是否抛出了我们指定的异常。意义在于,程序进行异常处理的时候,你觉得此处应该抛出异常,但是却没有抛出,也是是bug。不过我想像类似于被除数不能为0的这种情况,其实自己做个if-else判断最靠谱。

3、Runner(运行器) RunWith()

JUnit 中有一个默认 Runner ,如果你没有指定,那么系统自动使用默认 Runner 来运行你的代码。当然你也可以指定一个Runner来执行你的程序。下面两个是等价的

import  org.junit.runner.RunWith;

public class test1(){  }


@RunWith(TestClassRunner. class )

//TestClassRunner需要导入这个类相关的jar包,然而至今我没有找到。。。

public class test2(){  }

4、参数化测试:@RunWith(Parameterized. class )

同一个方法/同一个函数,可能结果有多种情况,如果一个个情况分开写就会比较麻烦,使用参数之后,我们就可以把多个测试用例的数据参数化起来,把参数传进去,一起执行。

比如某个函数:这个函数需要测试3中情况,正数、0、负数

除法函数

那我们的参数需要两个,一个是n,另一个是result。

private   int  param;

private   int  result;

然后定义一个函数,把参数以及结果传进去

定义函数,传入参数和结果

// 构造函数,对变量进行初始化

构造函数

接下来,就可以正常测试了

测试函数

执行输出结果:

测试结果

5、打包测试:@RunWith(Suite.class )

当你需要一次性把所有的单元测试集中在一起执行,或者进行每日构建的时候,你需要用到这个打包测试的功能。比如下面有两个分开的测试类:

public class test1{

@Test

public void test1(){

mytest1.......}

}

public class test2{

@Test

public void test2(){

mytest2.......}

}

那么,我们可以这样,就可以一下子执行两个测试:需要新建一个类,把需要一起执行的测试类当做参数,这个新类的内容不重要,空的也行

@RunWith(suite.class)

@Suite.SuiteClasses({test1.class,test2.class})

public class Suite Test {

System.out.println(“执行完毕”);

}

上一篇 下一篇

猜你喜欢

热点阅读