JUnit的核心对象:测试、测试类、测试集(Suite)、测试运行器

1. 测试:

@Test注释的、公共的、不带有任何参数、并且返回void类型的方法

2. 测试类:

公共的,包含对应类的测试方法的类

例如:CalculatorTest.java测试类,其中add()为测试方法

package com.junit.MyClass;

import org.junit.Before;
import org.junit.Test; import static org.junit.Assert.*; /**
* Created by lesley on 2017/1/14.
*/ //测试类
public class CalculatorTest {
private Calculator calculator;
@Before
public void setUp() throws Exception {
calculator = new Calculator();
} //测试方法
@Test
public void add() throws Exception {
assertEquals(calculator.add(3, 5), 8);
} }

JUnit在调用执行每个@Test方法之前,为测试类创建一个新的实例。这有助于提供测试方法之间的独立性,并且避免在测试代码中产生意外的副作用。因为每个测试方法运行于一个新的测试类实例上,所以我们就不能在测试方法之间重用各个实例变量值。

3. Assert

为了进行验证,我们使用由JUnit的Assert类提供的assert方法:

import static org.junit.Assert.*;

其中常用的assert方法:

1.assertEquals()方法,用来查看对象中存的值是否是期待的值,与字符串比较中使用的equals()方法类似;

2.assertFalse()和assertTrue()方法,用来查看变量是是否为false或true,如果assertFalse()查看的变量的值是false则测试成功,如果是true则失败,assertTrue()与之相反。

3.assertSame()和assertNotSame()方法,用来比较两个对象的引用是否相等和不相等,类似于通过“==”和“!=”比较两个对象;

4.assertNull()和assertNotNull()方法,用来查看对象是否为空和不为空。

4. Suit——测试集

Suit是一个包含不同测试的容器,将多个相关的测试类归为一组,一起运行。

同时Suit也是一个运行器,如果没有定义Suit测试集,那么JUnit会自动提供一个测试集,包含测试类中的所有测试。
我们可以通过Suit进行批量操作:(前两章中有提到)

AllTest.java

package com.junit.MyClass;

/**
* Created by lesley on 2017/1/14.
*/
import org.junit.runner.*;
import org.junit.runners.Suite; @RunWith(Suite.class)
@Suite.SuiteClasses({
CalculatorTest.class,
UserTest.class
})
public class AllTest { }

5. 测试运行器

测试运行器是JUnit用来管理测试类的生命周期,包括创建类、调用测试以及搜集结果。主要有几种:

JUnit 自带的几个测试运行器都继承了 org.junit.runner.Runner 类。如果想创建你自己的测试运行器,你就需要扩展Runner 类。

5.1 参数运行器——Parameterized

参数化的运行器允许使用不同的参数多次运行同一个测试。例如:

ParameterizedCalculateTest.java:

package com.junit.MyClass;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized; import java.util.Arrays;
import java.util.Collection;
import static org.junit.Assert.*; /**
* Created by lesley on 2017/1/14.
*/
//使用Parameterized 的测试运行器来运行一个测试类
// 1. 测试类必须用@RunWith注释,并且将Parameterized.class作为参数
@RunWith(value = Parameterized.class)
public class ParameterizedCalculateTest {
// 2. 必须声明测试中所使用的所有的实例变量
private double expected;
private double value1;
private double value2; //3. 提供一个@parameters注释的方法
//1)这个方法的签名必须是: Parameters public static ja va.u til . Collect ion , 无任何参数。
//2) Collecting元素必须是相同长度的数组。这个数组的长度必须要和唯一的构造函数的参数个数相同
@Parameterized.Parameters
public static Collection<Integer[]> getTestParameters(){
return Arrays.asList(new Integer[][] {
{2, 1, 1},
{3,2,1},
{5,2,1}, //错误参数
}
);
} //4. 构造函数
public ParameterizedCalculateTest(double expected, double value1, double value2){
this.expected = expected;
this.value1 = value1;
this.value2 = value2;
} //5. 测试
@Test
public void add(){
Calculator calculator = new Calculator();
assertEquals(expected, calculator.add(value1, value2), 0);
} }

逐步分析JUnit的运行过程:

JUnit调用了静态方法getTestParameters(),为其集合中的每个数组进行循环:

  调用构造函数,传入数组中的第一个元素:含有三个元素的数组{2, 1, 1},然后调用@Test方法。

最新文章

  1. ubuntu 配置 jdk的一些常见问题
  2. Redis(一) 介绍
  3. 测试LVS+Keepalived高可用负载均衡集群
  4. Android --SwipeRefreshLayout 下拉刷新
  5. leetcode@ [134] Gas station (Dynamic Programming)
  6. IDEA下安装/配置Jrebel
  7. [转]我的第一个WCF
  8. Examples_08_04
  9. 关于windows线程同步的四种方法
  10. JQuery中$.ajax()方法参数详解 (20
  11. 记录一次坑爹的VM连接主机的路程
  12. 在Mac OS 下 build Tesseract4.0 源码并在命令行中使用
  13. Hadoop Yarn调度器的选择和使用
  14. MFC创建线程示例
  15. eoe移动开发者大会—移动开发者的极客盛宴 2013年9月14日期待您的加入!!
  16. OpenStack镜像服务基本操作
  17. linux 通过 mac地址 查询 ip 和 清除arp 缓存
  18. 为K8S集群建立只读权限帐号
  19. auth.User.groups: (fields.E304)
  20. [AHOI2009]最小割

热门文章

  1. windows全系列激活脚本-改良版.cmd
  2. Node.js 使用gm处理图像
  3. springboot学习笔记-1 第一个springboot示例
  4. install plugin elasticsearch-analysis-ik
  5. Openjudge-NOI题库-和为给定数
  6. Java模拟post-get提交
  7. Js的Url中传递中文参数乱码的解决
  8. Mysq 5.7l服务无法启动,没有报告任何错误
  9. [HMLY]4.CocoaPods详解----制作
  10. jmeter之jtl文件解析