软件测试(三)—— 参数化测试用例(Nextday.java)

import static org.junit.Assert.*;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

//这个不可少
@RunWith(value = Parameterized.class)
public class NextdayTest {

    private Date expected;

    private Date value;

    @Parameters
    public static Collection<Object[]> getTestParameters() {

        //有效等价类
        Date d1 = new Date(5, 14, 2014);
        Date d2 = new Date(5, 13, 2014);

        //为负日期
//        Date d3 = new Date(5, 0, 2014);
//        Date d4 = new Date(5, -1, 2014);

        //为零日期
//        Date d5 = new Date(5, 1, 2014);
//        Date d6 = new Date(5, 0, 2014);

        //31号
        Date d7 = new Date(8, 31, 2015);
        Date d8 = new Date(8, 30, 2015);

        Date d9 = new Date(7, 31, 2014);
        Date d10 = new Date(7, 30, 2014);

        Date d11 = new Date(7, 1, 2013);
        Date d12 = new Date(6, 30, 2013);

        //闰年
        Date d13 = new Date(3, 1, 2004);
        Date d14 = new Date(2, 29, 2004);

        Date d15 = new Date(2, 29, 2004);
        Date d16 = new Date(2, 28, 2004);

        //400年是闰年
        Date d17 = new Date(3, 1, 2000);
        Date d18 = new Date(2, 29, 2000);

        Date d19 = new Date(3, 1, 2013);
        Date d20 = new Date(2, 28, 2013);

        //被4整除,不被100整除
        Date d23 = new Date(3, 1, 2100);
        Date d24 = new Date(2, 28, 2100);

        //到第二年
        Date d21 = new Date(1, 1, 2014);
        Date d22 = new Date(12, 31, 2013);

        //下一个月
        Date d25 = new Date(1, 31, 2013);
        Date d26 = new Date(1, 30, 2013);

        Date d27 = new Date(2, 1, 2013);
        Date d28 = new Date(1, 31, 2013);

        Date d29 = new Date(4, 1, 2014);
        Date d30 = new Date(3, 31, 2014);

        Date d31 = new Date(5, 1, 2014);
        Date d32 = new Date(4, 30, 2014);

        Date d33 = new Date(6, 1, 2014);
        Date d34 = new Date(5, 31, 2014);

        Date d35 = new Date(7, 1, 2014);
        Date d36 = new Date(6, 30, 2014);

        //左为 expected, 右为 value
        Object[][] date = new Object[][] {
                {d1, d2},
//                {d3, d4},
//                {d5, d6},
                {d7, d8},
                {d9, d10},
                {d11, d12},
                {d13, d14},
                {d15, d16},
                {d17, d18},
                {d19, d20},
                {d21, d22},
                {d23, d24},
                {d25, d26},
                {d27, d28},
                {d29, d30},
                {d31, d32},
                {d33, d34},
                {d35, d36}
        };
        return Arrays.asList(date);

    }    

    //构造函数不要省略!
    public NextdayTest(Date expected, Date value) {
        super();
        this.expected = expected;
        this.value = value;
    }

    @Test
    public void testNextDay() {

        assertEquals(expected, Nextday.nextDay(value));

    }

}
时间: 2024-10-06 01:05:52

软件测试(三)—— 参数化测试用例(Nextday.java)的相关文章

三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) 卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout类提供的方法可以切换该空间中显示的组件. 1.  CardLayout类的常用构造函数及方法 2.  使用CardLayout类提供的方法可以切换显

聊聊高并发(三十六)Java内存模型那些事(四)理解Happens-before规则

在前几篇将Java内存模型的那些事基本上把这个域底层的概念都解释清楚了,聊聊高并发(三十五)Java内存模型那些事(三)理解内存屏障 这篇分析了在X86平台下,volatile,synchronized, CAS操作都是基于Lock前缀的汇编指令来实现的,关于Lock指令有两个要点: 1. lock会锁总线,总线是互斥的,所以lock后面的写操作会写入缓存和内存,可以理解为在lock后面的写缓存和写内存这两个动作称为了一个原子操作.当总线被锁时,其他的CPU是无法使用总线的,也就让其他的读写都等

软件测试接口测试的测试用例类型

接口测试的目的是为了测试接口(听起来怪怪的),尤其是那些与系统相关联的外部接口,测试的重点是要检查数据的交换,传递和控制管理过程,还包括处理的次数.本文主要介绍了接口测试用例类型,让我们一起来看. AD:WOT2014:用户标签系统与用户数据化运营培训专场 接口测试是项目测试的一部分,它测试的主要对象是接口,是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点.测试的重点是检查数据交互.传递和控制管理过程预计系统见的相互依赖关系等. 最近测试了下S

RabbitMQ基本功能测试用例(Java实现)

为了测试RabbitMQ是否好用,编写了一个由Java语言编写的RabbitMQ基本功能测试用例,仅供参考. 代码说明: 由于实现语言是Java,因此有Java虚拟机(安装了JDK或JRE)即可测试,不需要像Python一样需要安装第三方模块,便于Docker环境下做简单测试.在此测试用例用用到了amqp-client-3.x.x.jar库,可以自行下载. 为实现一个java源文件中实现收与发(编译后还是3个Class文件),在main函数中起了两个线程,一个负责发,一个负责收,用来测试Rabb

java安全沙箱(三)之内置于Java虚拟机(及语言)的安全特性

java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及Java API 本篇博客主要介绍下"内置于Java虚拟机(及语言)的安全特性":其它几类安全机制会在后续博客中陆续介绍. 简介 jvm装载一个类,并且对字节码进行了四趟扫描,这些字节码就能安全地被执行了.然而去了这些安全校验,jvm在执行字节码时还进行了一些内置的安全机制校验.这些安全机制

软件测试系列之测试用例(七)

认识测试用例 定义 测试用例(Test Case)是为某个特殊目标而编制的一组测试输入.执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求. 构成 用例ID.用例名称.用例描述.前提条件.结束准则.测试步骤.预期结果.实际结果.判断准则. 重要性 测试用例的设计如此重要,原因在于完全的测试是不可能的,对任何程序的测试必定是不完全的.所以,最显然的测试策略就是努力使测试尽可能完全.下面是更为详尽的测试用例的好处: 1.在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效

重温数据结构:二叉树的常见方法及三种遍历方式 Java 实现

读完本文你将了解到: 什么是二叉树 Binary Tree 两种特殊的二叉树 满二叉树 完全二叉树 满二叉树 和 完全二叉树 的对比图 二叉树的实现 用 递归节点实现法左右链表示法 表示一个二叉树节点 用 数组下标表示法 表示一个节点 二叉树的主要方法 二叉树的创建 二叉树的添加元素 二叉树的删除元素 二叉树的清空 获得二叉树的高度 获得二叉树的节点数 获得某个节点的父亲节点 二叉树的遍历 先序遍历 中序遍历 后序遍历 遍历小结 总结 树的分类有很多种,但基本都是 二叉树 的衍生,今天来学习下二

Top k问题的讨论(三种方法的java实现及适用范围)

在很多的笔试和面试中,喜欢考察Top K.下面从自身的经验给出三种实现方式及实用范围. 合并法 这种方法适用于几个数组有序的情况,来求Top k.时间复杂度为O(k*m).(m:为数组的个数).具体实现如下: /** * 已知几个递减有序的m个数组,求这几个数据前k大的数 *适合采用Merge的方法,时间复杂度(O(k*m); */ import java.util.List; import java.util.Arrays; import java.util.ArrayList; public

三个实例演示 Java Thread Dump 日志分析

jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注)  执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注) 暂停,Suspended 对象等待中,Object.wait() 或 TIMED_WAITING 阻塞,Blocked(重点关注)   停止,Parked 下面我们先从第一个例子开始分析,然后再列出不同线程