Junit4在工作中一直只关注简单的单元测试应用,并没有进行系统一点的了解。这两天在修改测试用例时,对它进行了一些了解。现把自己的想法记录下来,以便加深记忆和日后查看。
Junit4.x后的jar包中,存在两类:org.junit.*和junit.framework.*
其中,
junit.framework.*是Junit4之前的包,需要继承TestCase类实现单元测试类的编写,且每个测试方法都要求以testxxx规则命名,Junit框架才能运行该测试方法。
org.junit.*是Junit4之后的包,不再需要继承任何类,只需要使用注释(@Test)即可实现测试方法的自动调用,测试方法命名也自定义,不需再遵守testxxx的命名规则。
Junit的各测试方法的执行顺序不是按代码中的顺序执行,顺序无法指定,不同的运行平台执行顺序也会有差异。
以下是针对以上两种Junit的使用示例:
1.Junit4.x版本以前的测试方法:
package com.self;
import junit.framework.TestCase;
public class TestJunitCase extends TestCase {
public TestJunitCase(String methodName) {
super(methodName);
}
/**
* 测试方法1
*/
public void testFirst() {
System.out.println("first Test Case...");
}
/**
* 测试方法2
*/
public void testSecond() {
System.out.println("second Test Case...");
}
/**
* 测试方法3
*/
public void testThird() {
System.out.println("third Test Case...");
}
}
测试结果如下:
first Test Case...
second Test Case...
third Test Case...
提示:若需要对测试用例的执行顺序进行指定,可通过以下方法进行调整。(建议各测试用例保持相对独立,尽量解耦,减少依赖及不必要的影响)
package com.self;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class TestJunitCase extends TestCase {
public TestJunitCase(String methodName) {
super(methodName);
}
/**
* 可通过该方法调整各测试方法的执行顺序
* @return
*/
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(new TestJunitCase("testSecond"));
suite.addTest(new TestJunitCase("testThird"));
suite.addTest(new TestJunitCase("testFirst"));
return suite;
}
/**
* 测试方法1
*/
public void testFirst() {
System.out.println("first Test Case...");
}
/**
* 测试方法2
*/
public void testSecond() {
System.out.println("second Test Case...");
}
/**
* 测试方法3
*/
public void testThird() {
System.out.println("third Test Case...");
}
}
测试结果如下:
second Test Case...
third Test Case...
first Test Case...
2.Junit4.x版本以后的测试方法:
package com.self;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class TestPractise {
public static int i;
public static int j;
public TestPractise() {
super();
}
/**
* 只调用一次,在所有测试方法执行前调用,可做些准备工作
*/
@BeforeClass
public static void beforeClass() {
System.out.println("this method is called only One Time before...");
}
/**
* 每个测试方法执行前都调用
*/
@Before
public void beforeMethod() {
System.out.println("this method is called EveryTime before..." + i++);
}
/**
* 测试方法1
*/
@Test
public void firstMethod() {
System.out.println("first Test Case...");
}
/**
* 测试方法2
*/
@Test
public void secondMethod() {
System.out.println("second Test Case...");
}
/**
* 每个测试方法执行后都调用
*/
@After
public void afterMethod() {
System.out.println("this method is called EveryTime end..." + j++);
}
/**
* 只调用一次,在所有测试方法执行结束后调用,可做些清理工作
*/
@AfterClass
public static void afterClass() {
System.out.println("this method is called only One Time after...");
}
}
测试结果如下:
this method is called only One Time before...
this method is called EveryTime before...0
first Test Case...
this method is called EveryTime end...0
this method is called EveryTime before...1
second Test Case...
this method is called EveryTime end...1
this method is called only One Time after...
备注:以上标红的两处,即@BeforeClass,@AfterClass必须是静态方法
其他知识可参考以下两处:
JUnit学习笔记:http://wanqiufeng.blog.51cto.com/409430/426763
全面认识JUnit4的新特特征:http://dev.yesky.com/375/2584375.shtml
分享到:
相关推荐
NULL 博文链接:https://hucj.iteye.com/blog/2190715
自己搜集和总结的,比较适合新手学习,涉及JUnit3.8和JUnit4.x有区别的地方
junit使用总结的资料,很适合想了解与使用junit的学习者 version: junit 4与jdk 1.5或以上版本.
使用JUnit 对下列选择排序法进行测试。 public void select_sort (int a[]) { 1 int i, j, k, t, n; 2 n = a.length; 3 for (i = 0; i ; i++) { 4 k = i; 5 for (j = i + 1; j ; j++) { 6 if (a [j] [k...
在这里,它包含一个用于呈现CRUD和JUnit 5呈现的系统,以展示在整个学习路径中学习到的知识。 Instruçõespara acriaçãodo servidor e banco de dados: Prime主机,主机服务器“ 3306”的主机,COM主机名...
内容包括客户端与服务器端之间的交互,正则表达式,Junit,Maven
这是学习mybatis的demo以及总结,会从最基本的项目构建开始,包括Junit测试,log4j等等。 1. 主要是介绍了什么是框架,介绍mybatis,演示从0到搭建一个实现插入功能的mybatis demo,同时包含test测试以及日志。 2. ...
ArrayList 底层结构和源码分析 Vector 底层结构和源码剖析 LinkedList 底层结构 ArrayList 和 LinkedList 比较 Set 接口和常用方法 Map 接口和常用方法 总结-开发中如何选择集合实现类(记住) Collections工具类 泛型...
总结 2. 安装和运行Maven 2.1. 验证你的Java安装 2.2. 下载Maven 2.3. 安装Maven 2.3.1. 在Mac OSX上安装Maven 2.3.2. 在Microsoft Windows上安装Maven 2.3.3. 在Linux上安装Maven 2.3.4. 在FreeBSD或...
assertEquals(“JUnit test”, 1, hits.length()); Lucene的线程安全性 不允许使用多个IndexWriter或IndexReader实例同时对一个索引进行修改 IndexWriter和IndexReader是线程安全的,可以被多线程共享 全文索引/...
{1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{...
博客系统博客系统BLOG是学习JavaWeb开发4个月以来的总结实践项目,使用SSM(Spring,SpringMVC,MyBatis)框架,MVC三层结构,Lucene全部检索引擎,Junit 4单元测试,logback日志框架,Druid数据库连接池,Shiro安全...
由于工作的需要,最近要对Android客户端软件进行测试,便学习了一下Android客户端测试的方法,现在与大家分享一下。 1.在Android客户端测试方面可以分为如下几个大的类别: 1、安卓黑盒测试工具 1)包括本身自带的...
对spring学习阶段进行总结,主要优spring概念、spring的ioc控制反转、spring的di依赖注入、spring的aop(手动aop、半自动aop、传统aop、基于aspectj的aop)、事务管理(事务的概念、事务的四大特征、事务的隔离界别、...
《分布式 Java》是一本关于 Java 分布式应用的学习教程,是对市面上基于 Java 的分布式系统最佳实践的技术总结。图文并茂,并通过大量实例让你走近 Java 的世界! 本书业余时间所著,水平有限、时间紧张,难免疏漏,...
目录 1.1 Spring 框架学习路线:...........................................................................................................................4 1.2 Spring 框架的概述:...........................
通过这种方式将系统进行清晰的划分,维护人员可通过对模块接口的学习快速了解子系 统的运行流程,当需要时再对某模块进一步分析。 1.3 改善软件的可测试性 维护人员对代码进行修改后,必须进行测试,才能保证软件的...
通过这种方式将系统进行清晰的划分,维护人员可通过对模块接口的学习快速了解子系 统的运行流程,当需要时再对某模块进一步分析。 1.3 改善软件的可测试性 维护人员对代码进行修改后,必须进行测试,才能保证软件的...
持续集成简单总结 一、理论篇: 持续集成鼓励尽量短周期内项目团队的代码提交,同时保证每次check in都不会损害我们的构建通过。它跟每日构建的区别就在于代码提交频率更高(一般为一个小时),构建的频率也更高,...