JUnit4学习
参考:http://www.cnblogs.com/yangxia-test/p/3996120.html
JUnit4是一个开源的java单元测试框架,我们只需要引入一个包,就可以使用它的功能
先说说他的常见注解
@Before(每个测试方法执行之前都要执行一次,比如有些数据需要重新赋值
@After(每个测试方法执行后都执行一次,比如有些数据需要重新复制
@BeforeClass(所有方法执行前执行
@AfterClass(所有方法执行后执行
@Test(timeout = xxx)看当前测试方法是否在一定时间内完成(比如看是否死循环
@Test(expected=Exception.class)测试方法中是否有抛出了这个异常
@Ignore(历史原因或者没有设置好,就先不测试这个方法,加载@Test上面,不代替@Test
下面说说使用方法
准备一个测试用的类(里面有错误的方法
package andycpp; public class Calculator {
private static int result; // 静态变量,用于存储运行结果 public void add(int n) {
result = result + n;
} public void substract(int n) {
result = result - 1; // Bug:正确的应该是result=result-n;
} public void multiply(int n) {
// 此方法尚未写好
} public void divide(int n) {
result = result / n;
} public void square(int n) {
result = n * n;
} public void squareRoot(int n) {
for (;;)
; // Bug:死循环
} public void clear() {
result = 0; // 将结果清零
} public int getResult() {
return result;
}
}
导入JUnit4包
右键项目——》构建路径——》add Library——》JUnit
在相对应的java文件右键,new——》JUnit Test Case,编写各个方法
private static Calculator calculator = new Calculator(); @Before
public void setUp() throws Exception {
calculator.clear();
} @After
public void tearDown() throws Exception {
} @Test(timeout = 1000)
public void testAdd() {
calculator.add(2);
calculator.add(3);
} @Test
public void testSubstract() {
calculator.add(10);
calculator.substract(2);
assertEquals(8, calculator.getResult());
} @Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply() {
} @Test(expected = ArithmeticException.class)
public void testDivide() {
calculator.add(8);
calculator.divide(0);
assertEquals(4, calculator.getResult());
} @Test(timeout = 1000)
public void testSquareRoot() {
calculator.squareRoot(1);
}
右键测试类,run as --》JUnit可以看到效果
下面说带有多个参数一起解决
0,类前面加注解@RunWith(Parameterized.class)
1,设置参数
2,@Parameters方法
3,重写构造方法
4,@Test方法
private static Calculator calculator = new Calculator(); private int param;
private int result; @Before
public void setUp() throws Exception {
} @After
public void tearDown() throws Exception {
} @Parameters
public static Collection data() {
return Arrays.asList(new Object[][] { { 2, 4 }, { 0, 0 }, { -3, 9 } });
} public SquareTest(int param, int result) {
this.param = param;
this.result = result;
} @Test
public void testSquare() {
calculator.square(param);
assertEquals(result, calculator.getResult());
System.out.println("result=" + result);
}
效果图
我们打包想一起测试的时候,写个类包他们两个整合起来
代码内容
@RunWith(Suite.class)
@Suite.SuiteClasses({ CalculatorTest.class, SquareTest.class })
public class All {
}
JUnit4学习的更多相关文章
- Junit4学习使用和总结
Junit4学习使用和总结 部分资料来源于网络 编辑于:20190710 一.Junit注解理解 1.@RunWith 首先要分清几个概念:测试方法.测试类.测试集.测试运行器.其中测试方法就是用@T ...
- Junit4学习(一)新建Junit4工程
一,学习Junit4,学以致用 二,熟悉编写流程 工具:Eclipse,Junit包,hamcrest.core包 1,打开Eclipse开发工具,新建工程:file->Java Project ...
- Junit4学习笔记
一.初始化标注 在老Junit4提供了setUp()和tearDown(),在每个测试函数调用之前/后都会调用. @Before: Method annotated with @Before exec ...
- Junit4学习(六)Junit4参数化设置
一,背景, 有时候会对相同的代码结构做同样的操作,不同的时对参数的设置数据和预期结果:有没有好的办法提取出来相同的代码,提高代码的可重用度,junit4中使用参数化设置,来处理此种场景: 二,代码展示 ...
- JUnit4 学习笔记
一.环境搭建: 1.需要用的包: JUnit4.7:http://files.cnblogs.com/files/ShawnYang/junit4.7.zip hamcrest-1.2:http:// ...
- junit4学习(Annotation)
在一个测试类中,所有被@Test注解修饰的public,void方法都是testcase,可以被JUNIT执行. @Retention(value=RUNTIME) @Target(value=MET ...
- Junit4学习笔记--方法的执行顺序
package com.lt.Demo.TestDemo; import java.util.Arrays; import java.util.Collection; import org.junit ...
- Junit4学习(五)Junit4测试套件
一,背景 1,随着开发规模的深入和扩大,项目或越来越大,相应的我们的测试类也会越来越多:那么就带来一个问题,假如测试类很多,就需要多次运行,造成测试的成本增加:此时就可以使用junit批量运行测试类的 ...
- Junit4学习(四)Junit4常用注解
一,背景知识: 由前面的知识可以知道: /* * @Test:将一个普通方法修饰为一个测试方法 * @Test(exception=XXX.class) * @Test ...
随机推荐
- idea通过springboot初始化器新建项目
1.通过初始化器新建项目,勾选后 对应生成的pom文件 以及生成的包路径 2.生成项目后点击稍后弹出的自动自动导入maven工程的改变,当pom中有依赖改变时会自动刷新导入依赖 3.删除自动生成项目的 ...
- nswag vs swashbuckle
https://www.reddit.com/r/dotnet/comments/a2181x/swashbuckle_vs_nswag/ Swashbuckle https://github.com ...
- Caffe python利用classify.py实现对单通道(灰度图)的数据进行分类
比如你在mnist的prototxt中定义图输入是单通道的,也就是channel=1,然后如果直接调用classify.py脚本来测试的话,是会报错,错误跟一下类似. Source param sha ...
- RAID独立冗余磁盘阵列
独立冗余磁盘阵列(Redundant Array OF Independent Disks,RAID)开始于20世纪80年代美国加州大学伯克利分校的一个研究项目,当时RAID被称为廉价冗余磁盘阵列(R ...
- 2017版:KVM 性能优化之内存优化
我们说完CPU方面的优化,接着我们继续第二块内容,也就是内存方面的优化.内存方面有以下四个方向去着手: EPT 技术 大页和透明大页 KSM 技术 内存限制 1. EPT技术 EPT也就是扩展页表,这 ...
- oracle数据库插入优化
通过程序要把1000万的数据插入到数据表中,刚开始每100条数据耗时50ms左右,但是越往后越慢,最慢到了十几秒的都有,真实好坑了. 于是在网上百度了一波,如何进行insert优化.倒是有了一点小小的 ...
- 爬虫第六篇:scrapy框架爬取某书网整站爬虫爬取
新建项目 # 新建项目$ scrapy startproject jianshu# 进入到文件夹 $ cd jainshu# 新建spider文件 $ scrapy genspider -t craw ...
- selenium学习笔记(xpath和css定位)
简单的介绍下xpath和css的定位 理论知识就不罗列了 还是利用博客园的首页.直接附上代码: 这个是xpath #!/usr/bin/env python # -*- coding: utf_8 - ...
- asp.net core mvc中如何把二级域名绑定到特定的控制器上
由于公司的工作安排,一直在研究其他技术,所以一直没时间更新博客,今天终于可以停下手头的事情,写一些新内容了. 应用场景:企业门户网站会根据内容不同,设置不同的板块,如新浪有体育,娱乐频道,等等.有的情 ...
- 如何让pycharm以py.test方式运行
第一步:进入File—Settings—Python Integrated Tools 发现设置中Default test runner是Unittests 将其改为py.test,点击OK保存 如果 ...