`
yunzhongxia
  • 浏览: 648490 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Junit4学习笔记一

    博客分类:
  • java
阅读更多

      Junit4是Junit框架有史以来的最大改进,其主要目标是利用java5的Annotation特性来简化测试用例的编写。Junit4的官方网址是http://www.junit.org/

   Junit依赖反射来执行每个以test开头的方法,然而在Junit4中,由于有了Annotation的支持,测试方法不需要再以testXXX标示了,而是写上一个@Test标注即可。例如:

    

 

@Test
	public void add(){
		assertEquals("不相等","1","1");
		
	}

 

 

 

 Junit4中测试类不需要继承自TestCase。不继承TestCase就无法调用assertXXX方法了,正因为如此,所有的assertXXX方法全部以静态方法被放入了Assert类,使用Assert.assertXXX()调用。使用方法是

 

import static org.junit.Assert.*;

 

 setUp()和tearDown()方法也依赖@Before和@After标记,这样做的最大的好处是在继承体系内不必担心忘记了在setUp()方法中调用父类的super.setUp()方法,JUnit框架会自动处理父类的@Before和@After标记的方法。

并且,JUnit框架对@Before和@After的调用顺序类似于类的构造方法和析构方法,即@Before按照父类到子类的顺序调用,@After则相反,这样保证了资源的正确获取和释放。

当然,不再强迫必须使用setUp和tearDown作为方法名,可以使用更有意义的方法名,例如:initDatabase()和closeDatabase(),只要它们被标注了@Before和@After即可。

@Before
	public void test1(){
		System.out.println("开始初始化----");
	}

	@After
	public void test2(){
		System.out.println("销毁资源----");
	}

 

 

JUnit 4另一个较大的变化是引入了@BeforeClass和@AfterClass,它们在一个Test类的所有测试方法执行前后各执行一次。这是为了能在@BeforeClass中初始化一些昂贵的资源,例如数据库连接,然后执行所有的测试方法,最后在@AfterClass中释放资源。

正如你能想到的,由于@BeforeClass和@AfterClass仅执行一次,因此它们只能标记静态方法,在所有测试方法中 共享的资源也必须是静态引用:
     

	@BeforeClass
	public static void  test11(){
		System.out.println("所有方法调用前要做的事情");
	}

@AfterClass
	public static  void test22(){
		System.out.println("所有方法测试完后要调用的");
	}

 

Junit4可以使用expected=Exception.class来期待一个预期的异常,而不必编写

try{

    fail("No exception")

}catch(Exception e){

   //Ok

}

例如:测试数组长度越界的异常。

@Test(expected= IndexOutOfBoundsException.class) 
	public void empty() {
		System.out.println("IndexOutOfBoundsException");
	    new ArrayList<Object>().get(0); 
	}

 

对于非常耗时的测试,@Test还有一个timeout来标识该方法最长执行时间,超过此时间即表示该测试方法失败:

 @Test(timeout=1) 
	 public void infinity() {
	       while(true);
	  }

 

以上方法若执行时间超过1ms则测试失败,由于依赖CPU的执行速度,在不同的机器上测试结果也不同。

 

运行多个测试用例:

JUnitCore.runClasses(MyTest.class);

 

runClasses方法的参数可以写多个测试类的class

 

 

 

 下面是一个简单的测试用例。

package com.amc.purview.action;
import static org.junit.Assert.*;

import java.util.ArrayList;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;


public class MyTest {
	@Before
	public void test1(){
		System.out.println("开始初始化----");
	}
	@BeforeClass
	public static void  test11(){
		System.out.println("所有方法调用前要做的事情");
	}
	
	@Test
	public void add(){
		assertEquals("不相等","1","1");
		
	}
	@Test
	public void add2(){
		System.out.println("测试用例2");
		assertEquals("不相等","1","1");
		
	}
	@Test(expected= IndexOutOfBoundsException.class) 
	public void empty() {
		System.out.println("IndexOutOfBoundsException");
	    new ArrayList<Object>().get(0); 
	}
	 @Test(timeout=1) 
	 public void infinity() {
	       while(true);
	  }


	@After
	public void test2(){
		System.out.println("销毁资源----");
	}
	
	@AfterClass
	public static  void test22(){
		System.out.println("所有方法测试完后要调用的");
	}

}

 

 

运行测试用例:

 

package com.amc.purview.action;

import junit.framework.JUnit4TestAdapter;

import org.junit.runner.JUnitCore;

public class MyTest3 {
	public static void main(String[] args) {
		JUnitCore.runClasses(MyTest.class);
		System.out.println();
		//MyTest3.suite();
	}

	public static junit.framework.Test suite() { 
	    return new JUnit4TestAdapter(MyTest.class); 
	}

}

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    JUnit4学习笔记

    法在每个测试方法执行之后都要执行一次,相当于 JUnit3 中的 tearDown 方法,用于清理测试环境。@Test:这是 JUnit4 中的核心元数据,用于标记测试方法。当 JUnit4 运行测试时,会查找所有带有 @Test 注解的方法,并...

    Junit学习笔记~

    Junit学习笔记,希望有用~~~~~~~~~~~~~~~~~~~~~~

    Junit4学习笔记—入门篇.pdf

    ### JUnit4学习笔记——入门篇 #### 一、配置MyEclipse在项目中引入JUnit4.jar包 在使用JUnit4进行单元测试之前,首先需要确保开发环境已正确配置JUnit库。对于使用MyEclipse IDE的开发者来说,可以通过以下步骤...

    JUnit学习笔记

    这篇博客“JUnit学习笔记”可能是博主GreatJone在深入学习JUnit过程中所做的记录和总结,包括了JUnit的基本概念、核心组件、使用方法以及一些高级特性。 首先,JUnit的核心理念是基于断言的测试,即编写特定的测试...

    Junit 4.0 学习笔记

    《Junit 4.0 学习笔记》 JUnit 是一个广泛使用的Java编程语言的单元测试框架,尤其在敏捷开发和持续集成环境中扮演着至关重要的角色。本文将深入探讨JUnit 4.0版本的主要特性、核心概念以及如何有效利用它进行单元...

    junit个人学习笔记

    现在的版本都4.3.1,3.8.1的感觉好象不好找,虽然www.junit.org能够找到,但对我们这种英语不好的来说,还是不好找,再说了,现在好多的教程都是以3.8.1来写的,所以在这里把我找到的3.8.1传上来供大家以后下载 博文链接:...

    Junit学习笔记

    通过这份Junit学习笔记,你可以掌握单元测试的基本思想,熟练运用JUnit进行代码质量的保障。在实际开发中,单元测试不仅能帮助找出错误,还能在重构时提供安全保障,提高代码质量。不断学习和实践,你会发现自己在...

    Junit良葛格学习笔记

    "Junit良葛格学习笔记"很可能包含了一系列关于如何有效利用JUnit进行测试的教程和示例。下面将详细阐述JUnit的核心概念、功能以及在实际开发中的应用。 1. **JUnit简介**: JUnit是由Ernst Leiss和Kent Beck开发的...

    Junit学习.rar

    这个“Junit学习.rar”压缩包显然包含了关于JUnit从3.8到4.9版本的学习资料,包括可能的操作手册、教程文档以及个人的学习笔记。以下是基于这些资源可能涵盖的一些关键知识点: 1. **JUnit基础知识**:了解JUnit的...

    junit4测试源码

    关于"浪曦JUNIT4笔记"可能涉及的内容,浪曦可能对JUnit4的使用提供了详细的教程或者最佳实践,包括但不限于如何组织测试类,如何使用Mockito进行模拟对象测试,以及如何利用TestNG或Spock等其他测试框架与JUnit4结合...

    JUnit学习笔记之NetBeans入门篇

    本篇笔记将带你进入JUnit与NetBeans的结合使用世界,让你在NetBeans中更高效地进行单元测试。 首先,我们需要安装JUnit库到NetBeans。在NetBeans中,打开“工具”菜单,选择“库”,然后点击“新建库”。在弹出的...

    JUnit3.X和4.X学习记录及用例

    总之,这个学习资源将带你深入理解JUnit的基本概念和高级特性,通过阅读`JUnit学习笔记.txt`并动手实践其中的示例,你将能熟练掌握如何利用JUnit3和JUnit4进行有效的单元测试,从而提升代码质量和项目稳定性。

    Junit In Action 学习笔记----下载不扣分,回帖加1分,童叟无欺,欢迎下载

    第1章:带着你为一个简单的对象创建测试。在此过程中介绍了单元测试的好处,理念,和方法。 随着测试越来越复杂,我们把用junit创建更好的测试方案来展现。 第2章:进一步深入研究了Junit的类,生命周期和框架。...

    JUnit知识点滴集合笔记

    JUnit知识点滴集合笔记,这个包里面包括了好几篇文档,一定会让你对JUNIT有一个全新的认识。 JUnit 4 抢先看.doc JUnit in java 真正的测试用例实战.doc JUnit起步.doc junit实现过程.doc JUnit中如何测试异常.doc ...

    北京圣思园 junit全套笔记及源码

    在“北京圣思园 junit 全套笔记及源码”中,你将深入学习 JUnit 的各种功能和最佳实践。以下是一些关键知识点: 1. **安装与配置**:首先,你需要了解如何在你的开发环境中安装 JUnit,通常是通过 Maven 或 Gradle ...

    林信良java学习笔记

    林信良学习笔记(内容):ajax学习笔记,算法学习笔记,计算机图形学,C++学习笔记,设计模式,Hibernate学习笔记,Java学习笔记,JSF,JSP/Servlet,JUnit,Spring,Struts等

    Junit白盒测试学习文档

    在“JUnit4入门学习笔记.doc”这份文档中,我们可以期待找到以下关键知识点: 1. **JUnit介绍**:首先会介绍JUnit的基本概念,包括它的起源、目标以及在软件开发中的地位,以及与其它测试框架的比较。 2. **环境...

Global site tag (gtag.js) - Google Analytics