JUnit

測试的重要性毋庸质疑。但怎样使測试更加准确和全面。而且独立于项目之外而且避免硬编码,JUnit给了我们一个非常好的解决方式。

能够说JUnit是为单元測试而生的,一个Java语言的单元測试框架。当然,和JUnit类似的。其它语言的单元測试框架还有:CppUnit、NUnit等,差点儿全部的单元測试工具XUnit都是按照JUnit来写的。

一、JUnit的命名规则和习惯

1、假设有一个名为ClassA的被測试函数,那么測试类的名称就是TestClassA

2、假设有一个名为methodA的被測试函数。那么測试函数的名称就是testMethodA

演示样例

首先如果有一个项目类Classs例如以下:

public class Classs {
Studentstudent=null;
//返回学生集合
publicList<Student> QueryStudent(){
List<Student>lsts=new ArrayList<Student>();
returnlsts;
} publicStudent QueryOne(){
returnstudent;
}
}

当中定义了一个QueryStudent方法返回一个集合;QueryOne的方法返回一个对象。好。如今我们要对方法进行測试。

public final voidtestQueryStudent() {
ClasssmyClass=new Classs();
assertNotNull(myClass.QueryStudent());
} publicfinal void testQueryOne() {
ClasssmyClass=new Classs();
assertNotNull(myClass.QueryOne());
}

这种方法在JUnit框架中称之为一个断言,JUnit提供给我们了非常多断言,比方assertEqual,assertTrue...,我们能够利用这些断言来推断两个值是否相等或者二元条件是否为真等问题。

然后我们能够执行JUnit来检測我们的測试结果,这样我们在不影响Project文件的前提下,实现了对Project单元的測试。

在JUnit框架下,他会自己主动执行全部以test..开头的測试方法(利用java的反射机制),怎样自己定义那些方法执行?一种方法我们能够改变測试方法的名称,不用test开头就可以。这样測试框架就会忽略它。另外一种方法我们能够自己手工组合我们须要的測试集合,我们能够通过创建test
suite来取得,不论什么測试类都可以包括一个名为suite的静态方法:

TestStudent类:

public class TestStudentextends TestCase {

    public TestStudent(String string) {
super(string);
} protectedvoid setUp() throws Exception {
super.setUp();
} publicfinal void testQueryOneClass() {
Studentstudent=new Student();
assertNotNull(student.QueryOneClass());
} publicfinal void testQueryClasss() {
Studentstudent=new Student();
assertNotNull(student.QueryClasss());
} public static Test suite(){
TestSuite suite = new TestSuite();
suite.addTest(newTestStudent("testQueryOneClass"));
return suite;
}
}

我们通过suite显式的说明了我们要执行哪些test方法,并且,通过给构造函数的String參数传值:让TestCase返回一个对命名測试方法的引用。

假设要測试两个类里的測试方法,我们能够再写一个类。写suite方法,选择行測试几个类中的方法。

TestComposite类:

public classTestComposite extends TestCase {

  public TestComposite(String string) {
super(string);
}
static public Test suite(){
TestSuite suite = new TestSuite();
suite.addTestSuite(TestClasss.class);
suite.addTest(TestStudent.suite());
return suite;
}
}

这个类会执行TestStudent类中的suite方法指定执行的測试方法,还会执行TestClasss类中存在的符合命名规范的方法。

总结

JUnit给我们提供了非常多方便的服务,比如:假设測试方法。每个都须要数据库连接。那么我们岂不是要在代码里写非常多遍?不用操心。JUnit给我们提供了能起到总控的方式。我们须要针对suite做一个setUp和tearDown,须要提供所需的一个suite(不管通过什么样的方法)而且把它包装进一个TestSetup对象,和动态代理的思想非常类似。有兴趣的能够自己查一下,实现起来非常easy。

版权声明:本文博主原创文章。博客,未经同意不得转载。

Java基金会——JUnit的更多相关文章

  1. Java 工具 JUnit单元测试

    Java 工具 JUnit单元测试 @author ixenos 1.1.   JUnit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个 ...

  2. java自动化-junit框架简述

    本人使用的是java的junit框架来组织的自动化测试,故我这边需要简单介绍一下junit框架 首先,建议自行百度一下junit框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...

  3. Java单元测试(Junit+Mock+代码覆盖率)---------转

    Java单元测试(Junit+Mock+代码覆盖率) 原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测 ...

  4. vi, Java, Ant, Junit自学报告 - 实训week1

    vi, Java, Ant, Junit自学报告 2017软件工程实训 15331023 陈康怡 vi Vi是linux系统的标准文本编辑器,采用指令的方式进行操作,此处仅记录部分常用的指令. vi模 ...

  5. java单元测试(Junit)

    Eclipse最基本的模块测试 1:首先创建一个java工程,在工程中创建一个被单元测试的Student数据类,如下: package UnitTest; public class Student { ...

  6. Java 单元测试(Junit)

    在有些时候,我们需要对我们自己编写的代码进行单元测试(好处是,减少后期维护的精力和费用),这是一些最基本的模块测试.当然,在进行单元测试的同时也必然得清楚我们测试的代码的内部逻辑实现,这样在测试的时候 ...

  7. JAVA单元测试Junit

    1.为什么要用Junit 做了很多项目,几乎没怎么用过Java的单元测试,是因为它没有用吗?显然不是,是自己的开发方式太不规范!对于大型的软件项目,单元测试不仅有效实用,还非常有必要!它能够测试每个方 ...

  8. java使用Junit工具进行单元测试

    目录 1.类的定义: 2.Junit工具的使用: 3.对该类进行单元测试并查看结果: 4.记录各个阶段的时间 5.将过程记录在个人博客上(github地址) 1.类的定义:类是同一事物的总称,类是封装 ...

  9. Java单元测试(Junit+Mock+代码覆盖率)

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

随机推荐

  1. Java引用类型具体解释

    JVM  的垃圾回收器对于不同类型的引用有不同的处理方式.java中对于一个对象来说,仅仅要有引用的存在,它就会一直存在于内存中.假设这种对象越来越多,超出了JVM中的内存总数,JVM就会抛出OutO ...

  2. Windows - Windows的文件名的全路径(Fully Qualified File Name)的最大长度为260字节

    例如,你可以做以下实验来验证这个限制值: 在随意文件夹下新建一个文件夹. 在该新建文件夹下创建一个随意文件.使其名字长度不能再输入为止. 把该文件的全路径名copy到Microsoft Word中进行 ...

  3. NET实现的DDD、CQRS与微服务架构

    WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例 最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA).我经过两周业余时间 ...

  4. VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表

    原文:VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表 Excel具有强大的图表显示.分析功能,这点毋庸置疑,但是如果将常规MIS系统中的数据以报表的形式在Excel中显示,却并不那 ...

  5. spring-security3.2.5实现中国式安全管理(转)

    最近公司要做开发平台,对安全要求比较高:SPRING SECURTIY框架刚好对所有安全问题都有涉及,框架的作者最近还做了spring-session项目实现分布式会话管理,还有他的另一个开源项目sp ...

  6. hdu5179(数位dp)

    传送门:beautiful number 题意:令 A=∑ni=1ai?10n?i(1≤ai≤9)(n为A的位数).若A为“漂亮的数”当且仅当对于任意1≤i<n满足a[i]≥a[i+1]且对于任 ...

  7. sqlserver安全加固

      sqlserver2012安装好以后必要的安全加固,不然非常多DBA的信息普通账户登录后都能够读取到.  --use [master] --GO --DENY VIEW SERVER STATE ...

  8. Java与C/C++有什么区别

    JDK包含JRE, 1-08: Helloworld: 01-08:classpath配置: 运行其它目录下的class文件: classpath一般不加分号,只找classpath下的文件: 后面加 ...

  9. 谈Web应用系统的可维护性

           每一个软件开发人员都十分清楚, 当软件构建得越来越复杂时, 可维护性就成了一个很突出的问题. 如何在构造软件系统的过程中始终保持可控制的可维护性呢?          一. 整体组织   ...

  10. linux下登陆mysql失败

    一.提示由于没有密码,拒绝登陆 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 1 ...