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. hdu1695(莫比乌斯反演)

    传送门:GCD 题意:求[1,n],[1,m]gcd为k的对数. 分析:莫比乌斯入反演门题,gcd(x,y)==k等价于gcd(x/k,y/k)==1,求出[1,n][1,m]互质的对数,在减去[1, ...

  2. 【Bug笔记】The superclass &quot;javax.servlet.http.HttpServlet&quot; was not found on the Java Build Path

    因为今天下载了一个eclipse se的版本号.所以想把原本eclipse ee这个软件外面的目录eclipse名字该成eclipse ee,方便以后的区分和管理.改了后又一次打开eclipse ee ...

  3. Linux 内核升级步骤

    1.解压内核文件包#xz -d linux-3.2.63.tar.xz #tar xvf linux-3.2.63.tar 2.拷贝解压文件到/usr/src#cp -r linux-3.2.63 / ...

  4. RSD和wlwmanifest是什么

    今天小博发现header.php文件里<?php wp_head(); ?>显示有以下的两句代码,因为小博的网站打开速度实在太慢了,换空间怕麻烦,那就只有优化代码了. <link r ...

  5. POJ 2524 :Ubiquitous Religions

    id=2524">Ubiquitous Religions Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 231 ...

  6. 正确AJAX了解该技术的,创建,应用

    ajax认识: 1. ajax这是间client与server机制.但这一机制是在前台的,利用前台的闲置功能,来进行前台与后台的数据交流,以达到增强用户体检.降低server压力,更有效的利用带宽的效 ...

  7. 关于http接口开发中json格式数据编码问题处理

    关于http接口开发中json格式数据编码问题处理 在实际工作中,接口很多时候返回json格式,但有时返回的格式会有编码问题 假设如下接口:http://service.test.com/interf ...

  8. Thinkphp中field和getField

    在数据库查询操作中field和getField方法是使用最频繁的.可是两者是有一定差别的.在这里记录下. field方法是用于定义要查询的字段(支持字段排除). getField方法获取数据表中的某个 ...

  9. 在web浏览器中判断app是否安装并直接打开

    最近公司App产品在运营推广上有一个需求,就是要求可以让用户在访问我们的推广网页时,就可以判断出这个用户手机上是否安装了我们的App,如果安装了则可以直接在网页上打开,否则就引导用户前往下载.从而形成 ...

  10. jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令

    jstack(查看线程).jmap(查看内存)和jstat(性能分析)命令   公司内部同事分享的一篇文章 周末看到一个用jstack查看死锁的例子.昨天晚上总结了一下jstack(查看线程).jma ...