博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Junit4学习(四)Junit4常用注解
阅读量:5738 次
发布时间:2019-06-18

本文共 2844 字,大约阅读时间需要 9 分钟。

一,背景知识:

由前面的知识可以知道:

    /*

     * @Test:将一个普通方法修饰为一个测试方法
     *   @Test(exception=XXX.class)
     *   @Test(time=毫秒)
     * @BeforeClass:它会在所有的测试方法前被执行,static修饰
     * @AfterClass:它会在所有的测试方法后被执行,static修饰
     * @Before:它会在每一个测试方法前被执行一次
     * @After:它会在每一个测试方法后被执行一次
     * @Ignore:省略
     * @RunWith:修改运行器org。junit。runner。Runner
     *
     * */

 

其实@Test不仅可以修饰一个普通方法为测试方法,还可以获取异常或者控制测试方法的执行时间

 

二,@Test的功能

A,获取异常

B,控制测试代码执行时间

 

 

A,获取异常代码展示

1,获取异常,对异常的捕获:@Test(expected=XXX.class)

1 package com.duo.util; 2  3 import static org.junit.Assert.*; 4  5 import org.junit.Test; 6  7 public class Anotation { 8      9     @Test(expected=ArithmeticException.class)10     public void testDivide(){11         assertEquals(4, new Calculate().divide(12, 0));12     }13 14 }

运行后结果:

 

2,没有通过@Test(expected=ArithmeticException.class)注解时代码以及结果:

1 package com.duo.util; 2  3 import static org.junit.Assert.*; 4  5 import org.junit.Test; 6  7 public class Anotation { 8      9     @Test10     public void testDivide(){11         assertEquals(4, new Calculate().divide(12, 0));12     }13 14 }

运行结果:

 B,控制测试代码执行时间,代码展示

测试方法控制@Test(timeout=毫秒),主要是针对代码中有循环代码的测试控制或者超时运行不符合预期的判定

1,我们使用对一个死循环进行测试:

 

1 package com.duo.util; 2  3 import static org.junit.Assert.*; 4  5 import org.junit.Test; 6  7 public class Anotation { 8  9     @Test(timeout=2000)10     public void testWhile(){11         while(true){12             System.out.println("run forever...");13         }14     }15 }

 

结果及时运行2秒后系统自动停止运行;

 

2,让当前线程运行2000毫秒,测试代码运行3000毫秒,符合预期结果

 

1 package com.duo.util; 2  3 import static org.junit.Assert.*; 4  5 import org.junit.Test; 6  7 public class Anotation { 8      9     @Test(timeout=3000)10     public void testReadFile(){11         try {12             Thread.sleep(2000);13         } catch (InterruptedException e) {14             // TODO Auto-generated catch block15             e.printStackTrace();16         }17     }18 }

 

运行结果通过;

也可以通过调整测试时间比线程时间小,测试不符合预期的场景;

三,Ignore注解(该注解可以忽略当前的运行的方法,有时候改测试方法没有实现或者以后再实现)

1 package com.duo.util; 2  3 import static org.junit.Assert.*; 4  5 import org.junit.Ignore; 6 import org.junit.Test; 7  8 public class Anotation { 9     10     @Test(expected=ArithmeticException.class)11     public void testDivide(){12         assertEquals(4, new Calculate().divide(12, 0));13     }14 15     @Ignore16     @Test(timeout=2000)17     public void testWhile(){18         while(true){19             System.out.println("run forever...");20         }21     }22     23     @Test(timeout=3000)24     public void testReadFile(){25         try {26             Thread.sleep(2000);27         } catch (InterruptedException e) {28             // TODO Auto-generated catch block29             e.printStackTrace();30         }31     }32 }

运行结果:

四,RunWith,可以修改测试运行器:org.junit.runner.Runner(后面使用到再解释)

五,断言:assert

断言assert的好多方法可以直接使用,主要是使用了静态导入:import static org.junit.Assert.*;

 

转载于:https://www.cnblogs.com/august-shi/p/6720288.html

你可能感兴趣的文章
Javascript String类的属性及方法
查看>>
vim编辑器如何添加或删除多行注释
查看>>
[LeetCode] Merge Intervals
查看>>
iOS开发-按钮的基本使用
查看>>
在QT和SDL搭建的框架中使用OPENGL在SDL窗口上进行绘图
查看>>
REST技术第三步 @BeanParam的使用
查看>>
SharePoint 读取 Site Columns 的数据并绑定到DropdownList
查看>>
Python中的对象行为与特殊方法(二)类型检查与抽象基类
查看>>
使用 axios 详解
查看>>
通信基站(dfs回溯,思维)
查看>>
nginx web加密访问
查看>>
iOS - Regex 正则表达式
查看>>
第 68 章 Logical Volume Manager (LVM)
查看>>
膝盖中了一箭之康复篇-第八个月暨2月份目标总结
查看>>
IPA提交APPStore问题记录(一)
查看>>
有利于seo优化的网站地图不能取巧
查看>>
快照产品体验优化
查看>>
ASCII
查看>>
ibatis SqlMap not found
查看>>
Android SD卡创建文件和文件夹失败
查看>>