keep the bar green to keep the code clean——Junit详解(二)
测试用例&测试套件
举个栗子:
|
MyStack类:
- public class MyStatck {
- private String[] elements;
- private int nextIndex;
- public MyStatck() {
- elements = new String[100];
- nextIndex = 0;
- }
- public void push(String element) throws Exception {
- if (nextIndex >= 100) {
- throw new Exception("数组越界异常!");
- }
- elements[nextIndex++] = element;
- }
- public String pop() throws Exception {
- if (nextIndex <= 0) {
- throw new Exception("数组越界异常!");
- }
- return elements[--nextIndex];
- }
- public String top() throws Exception {
- if (nextIndex <= 0) {
- throw new Exception("数组越界异常!");
- }
- return elements[nextIndex - 1];
- }
- }
对push方法编写测试:
- public void testPush(){
- MyStatck myStatck = new MyStatck();
- //测试用例中对方法抛出的异常进行try-catch处理。
- try {
- myStatck.push("Hello World!");
- } catch (Exception e) {
- Assert.fail("push方法异常,测试失败。");
- }
- String result = null;
- try {
- result = myStatck.pop();
- } catch (Exception e) {
- e.printStackTrace();
- }
- //验证断言压入的字符串是否为"Hello World!"。
- Assert.assertEquals("Hello World!", result);
- }
虽然testPush测试用例中调用了pop方法,但对pop方法仍要创建新的测试用例:
测试中是可以使用其他方法,不然就没法进行测试了
- public void testPop(){
- MyStatck myStatck = new MyStatck();
- try {
- myStatck.push("Hello World!");
- } catch (Exception e) {
- e.printStackTrace();
- }
- String result = null;
- try {
- result = myStatck.pop();
- } catch (Exception e) {
- Assert.fail("pop方法异常,测试失败。");
- }
- //验证断言弹出的字符串是否为"Hello World!"。
- Assert.assertEquals("Hello World!", result);
- }
两个测试方法大致相同,但是侧重点不同。侧重对测试方法的断言判断。
每个test case只做一件事情,只测试一个方面。
随着项目的开发,类越来越多,测试也越来越多。单个测试的机械动作也会拖慢速度。那么就需要更简便的方法,只要点一下,就可以测试全部的测试用例——这种方法就是使用测试套件。
测试套件(TestSuite):可以将多个测试组合到一起,同时执行多个测试
创建测试套件约定:
- 在test源目录内创建测试类;
- 创建public static Test suite(){}方法。
贴代码
- public class TestAll extends TestCase {
- public static Test suite(){
- TestSuite suite = new TestSuite();
- suite.addTestSuite(CalcTest.class);
- suite.addTestSuite(DeleteAllTest.class);
- suite.addTestSuite(MyStatckTest.class);
- return suite;
- }
- }
运行结果如图:

keep the bar green to keep the code clean——Junit详解(二)的更多相关文章
- keep the bar green to keep the code clean——Junit详解(一)
测试用例 单元测试时每个开发人员必需掌握的,是保证开发过程中代码的准确性,无误性,保证代码质量.敏捷开发模式是先根据用户需求写测试用例,考虑基本所有用户所需要的情况,再写实现方法.单元测试有很多种,当 ...
- junit单元测试(keeps the bar green to keeps the code clean)
error是程序错误,failure是测试错误. junit概要: JUnit是由 Erich Gamma (设计模式的创始人)和 Kent Beck (敏捷开发的创始人之一)编写的一个回归测试框架( ...
- 单元测试JUnit 4(二)——keeps the bar green to keeps the code clean
1.Failure和Error Failure是指测试失败 Error是指测试程序本身出错 (int a=10/0) 2.JUnit常用注解 2.1 @RunWith: 可以更改测试运行器(继承o ...
- 单元测试JUnit 4 (一)——keeps the bar green to keeps the code clean
1. 导读 Junit是一个可编写重复测试的简单框架,是基于Xunit架构的单元测试框架的实例.Junit4最大的改进是大量使用注解(元数据),很多实际执行过程都在Junit的后台做完了,而且写tes ...
- [转]OAuth 2.0 - Authorization Code授权方式详解
本文转自:http://www.cnblogs.com/highend/archive/2012/07/06/oautn2_authorization_code.html I:OAuth 2.0 开发 ...
- 【转】Code First 属性详解
下面解释每个配置的作用 Table :用于指定生成表的表名.架构信息. Column :用于指定生成数据表的列信息,如列名.数据类型.顺序等. Key :用于指定任何名称的属性作为主键列并且默认将此列 ...
- OAuth 2.0 - Authorization Code授权方式详解
I:OAuth 2.0 开发前期准备 天上不会自然掉馅饼让你轻松地去访问到人家资源服务器里面的用户数据资源,所以你需要做的前期开发准备工作就是把AppKey, AppSecret取到手 新浪获取传送门 ...
- iOS Code Signing: 解惑详解
iPhone开发的代码签名 代码签名确保代码的真实以及明确识别代码的来源.在代码运行在一个开发系统以前,以及在代码提交到Apple发布以前,Apple要求所有的的应用程序都必须进行数字签名.另外,Ap ...
- Action Bar详解(二)
在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果. 一.添加A ...
随机推荐
- JS中函数声明与函数表达式的不同
Js中的函数声明是指下面的形式: function functionName(){ } 这样的方式来声明一个函数,而函数表达式则是类似表达式那样来声明一个函数,如 var functionName ...
- 该用 QGraphicsView ? QtQuick-QML ?
目前QtQuick (2014/3/6) 已经发展了有一段时间了,很多人在用因此我也想看看是否适合我目前的项目. 我要做的是一个类似3DMax中的材质编辑器的东西,里面有成千上万的”表单“(不知道怎么 ...
- LMAX Disruptor—多生产者多消费者中,消息复制分发的高性能实现
解决的问题 当我们有多个消息的生产者线程,一个消费者线程时,他们之间如何进行高并发.线程安全的协调? 很简单,用一个队列. 当我们有多个消息的生产者线程,多个消费者线程,并且每一条消息需要被所有的消费 ...
- 自动生成.py文件头部的C语言小程序
每次都 vi xxx.py 然后再打 #!/usr/bin/env python 等等的程序头信息感觉有点麻烦,于是便想着写一个小程序自动生成这些头信息了,顺便在 ~/.bashrc 里写入 alia ...
- iOS开发 贝塞尔曲线
iOS开发 贝塞尔曲线UIBezierPath - 陌云 时间 2014-03-14 11:04:00 博客园-所有随笔区 原文 http://www.cnblogs.com/moyunmo/p/ ...
- 获取$(this)子节点对象的方法
获取$(this)子节点对象的方法: 1.children()方法: children() 方法返回被选元素的所有直接子元素. 该方法只会向下一级对 DOM 树进行遍历. 2.find()方法: fi ...
- mysql执行大量sql语句
今天需要通过csv上传大量数据到数据库 直接逐行执行insert效率极其低下 后面通过拼接insert,稍微提高了些许效率,但依然不满足 最后发现,把这些插入放入同一个事务里面可以大大提高效率 beg ...
- css3动画参数解释
@keyframes规定动画.animation 所有动画属性的简写属性,除了 animation-play-state 属性. ----------------------------------- ...
- Load Runner录制C/S客户端
1. 打开应用程序 2. 点击如下菜单 弹出窗口如下 3. 点击New,弹出窗口如下,选择Web(HTTP/HTML) 4. 点击Create,弹出窗口 5. 点击OK, ...
- (48) odoo的button用法
button 应用的比较多,这里来汇总一下 按钮<button>,支持的属性 icon 可用的icon在 addons/web/static/src/img/icons ...