TestCase和TestSuite详解
一、TestCast和TestSuite概念介绍
TestCase:字面意思,测试用例。为一个或多个方法提供测试方法,一般是一个test。
TestSuite:测试集合,即一组测试。一个test suite是把多个相关测试归入一组的快捷方式。如果自己没有定义,Junit会自动提供一个test suite ,包括TestCase中的所有测试。
TestRunner:测试运行器。执行test suite的程序。

TestSuite和TestCase都是继承自Test接口,同时,TestSuite的建立和使用依赖于TestCase实例,这儿注意的是每次执行一个TestCase里头的方法,都会按照setUp()、runTest()、tearDown()执行顺序进行方法的执行。因此,如果有涉及全局的操作可以重写setUp()、tearDown()在这方法里头操作。
TestCase继承自Assert类,因此TestCase中可以直接使用Assert中的相关方法,Assert类提供了几个常用的判断方法,Assert的类图可以参照图:

二、程序实例
我们新建一个maven工程,工程建好后会自带一个junit依赖,如果没有的话,引入junit依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.</version>
<scope>test</scope>
</dependency>
我们建一个Caculator.java工具类,测试使用
public class Calculator {
public int add(int a,int b){
return a+b;
}
public int plus(int a,int b){
return a-b;
}
}
2.1 TestCase使用
使用说明:
)访问权限都是public;
)返回类型都是void;
)没有参数;
)方法名以“test”开头。
编写一下TestCaseDemo.java测试类
public class TestCaseDemo extends TestCase{
public void testAdd(){
Calculator ca=new Calculator();
assertEquals(, ca.add(, ));
}
public void testPlus(){
Calculator ca=new Calculator();
assertEquals(,ca.plus(, ));
}
}
测试结果如下:

testAdd测试通过,testPlus测试失败,修改为assertEquals(14,ca.plus(23, 9));测试通过

2.2TestSuit使用
使用注意事项:
)必须以“suite”方法命名;
)suite方法的访问修饰权限必须为static;
)suite方法必须为静态方法;
)suite方法必须没有参数。
用test suite测试全部的测试用例,或者是我们想要测试的类,而不用一个一个执行,节省时间,编写一个TestSuitDemo.java测试类
public class TestSuitDemo{
public static Test suite(){
//创建TestSuite对象
TestSuite testSuite=new TestSuite("All Test From TestCaseExample");
//为TestSuite添加一个测试用例集合,参数为:ClasstestClass
//通过参数可以知道,其实该参数就是TestCase的子类
testSuite.addTestSuite(TestCaseDemo.class);
//创建具体的测试用例
Test test = TestSuite.createTest(TestCaseDemo.class, "testAdd");
//添加一个具体的测试用例
testSuite.addTest(test);
return testSuite;
}
}
测试结果如图:

通过上图看到执行了三个实例,如果想只执行一个实例,把以下代码注释即可:
testSuite.addTestSuite(TestCaseDemo.class);
TestCase和TestSuite类是JUNIT中比较重要的两个类,TestCase和TestSuite可以认为是JAVA的合成设计模式在单元测试中的应用,其实即便我们没有自己声明和创建TestSuite的子类,而且运行的TestCase子类的过程中也会创建TestSuite类,并将要执行的TestCase子类的实例对象添加到TestSuite中去执行,其执行过程可以如图所示:

TestCase和TestSuite详解的更多相关文章
- JUnit之TestCase和TestSuite详解
首先介绍下TestCase以及TestSuite. TestCase:字面意思,测试用例.为一个或多个方法提供测试方法.一般是一个test TestSuite:测试集合,即一组测试.一个t ...
- TestNG详解-深度好文
转自: https://blog.csdn.net/lykangjia/article/details/56485295 TestNG详解-深度好文 2017年02月22日 14:51:52 阅读数: ...
- 【python3+request】python3+requests接口自动化测试框架实例详解教程
转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...
- python+requests接口自动化测试框架实例详解
python+requests接口自动化测试框架实例详解 转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...
- Java基础学习总结(24)——Java单元测试之JUnit4详解
Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @BeforeClass 全局只会执行一次,而且是第一个运行 @Before ...
- 【单元测试】NUint使用详解及Visual Studio配置
阅读目录 什么是单元测试? 为什么使用单元测试? NUint使用详解: 示例 属性 断言 简单测试 VS配置: External Tools Visual Nunit 2010 NUnit Test ...
- cppunit使用详解
cppunit使用详解 第一步:如何安装 (我的运行环境: fc7 Linux, gcc4) cppunit 的安装是相当标准的linux的安装过程 a. 下载cppunit的源文件 ...
- maven常用插件配置详解
常用插件配置详解Java代码 <!-- 全局属性配置 --> <properties> <project.build.name>tools</proje ...
- HTMLParser 使用详解
htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或 提取html.它能超高速解析html,而且不会出错.现在htmlparser最新版本为2 ...
随机推荐
- 最佳虚拟容器LXC
最佳虚拟容器LXC 和"真正的虚拟机环境"不同, "容器"(container)只能在Linux上虚拟Linux, 不能虚拟WIndows, 因为它不能虚拟硬件 ...
- Linux centos7 redis安装教程
1.下载解压 #下载至/home/install(或windows系统下载后上传) mkdir /home/install cd /home/install wget http://124.205.6 ...
- ansible之template模块
趁着最近在搞ansible,现在学习了一波template模块的用法: 1.使用template模块在jinja2中引用变量,先来目录结构树 [root@master ansible]# tree . ...
- openwrt编译系统制作ubi镜像时会使用系统自带的ubinize还是openwrt编译系统中编译的ubinize
答:使用openwrt编译系统中编译的ubinize,那么这个工具在哪个目录下?在staging_dir/host/bin目录下
- Object.defineProperty和Object.defineProperties
添加属性到对象,或修改现有属性的特性 用法: Object.defineProperty(object, propertyName, descriptor); 参数: object ...
- 论OI中最大值的选取
为什么我的Floyd会输出负数啊? 为什么我的代码写对了却全都爆零了啊? 那么很可能是你的INF取大/小了! 那么inf到底应该取什么值呢? 首先,inf应该要比一般的题目中出现的数据要大,但是又不能 ...
- Python的hasattr() getattr() setattr() 函数使用方法详解--转载
hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 ...
- python 列表求和
def sum_list(items): sum_numbers = for x in items: sum_numbers += x return sum_numbers print(sum_lis ...
- vue2.0中v-on绑定自定义事件
vue中父组件通过prop传递数据给子组件,而想要将子组件的数据传递给父组件,则可以通过自定义事件的绑定. 每个Vue实例都实现了[事件接口],即: 1.使用 $on(eventName) 监听事件 ...
- Mediator(中介者)
意图: 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 适用性: 一组对象以定义良好但是复杂的方式进行通信.产生的相互依 ...