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

Junit 使用

    博客分类:
  • Java
阅读更多
由于 JUnit 在平时 Java 开发的过程中用得比较多,网上这部分详细介绍的也不多,找了点资料整理一下一些开发中常用的 JUnit 测试使用方法。里面我都故意使断言出错,错误详细信息我就不贴了,执行看看就清楚了。

JUnit 简介
针对写好的 Java 程序进行测试,一般的测试方式通常依赖于人工对输入结果的判断,缺少效率且难以组织,可以使用 JUnit 提高测试效率,
JUnit 用途是单元测试,针对包中的类和方法进行测试,找出程序中存在的问题或者 bug。

JUnit 特性
对预期结果的断言
用于共享测试数据的的测试工具
便于组织执行测试的测试套件
图形和文字的测试界面

简单断言测试
import junit.framework.Assert;

public class Student {
	private int number;
	private String name;
	private int age;

	public Student() {
		number = 0;
		name = null;
		age = 0;
	}

	public Student(int number, String name, int age) {
		this.number = number;
		this.name = name;
		this.age = age;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int hashCode() {
		return number;
	}

	public boolean equals(Object obj) {
		if (obj instanceof Student) {
			Student one = (Student) obj;
			if (one.getNumber() == getNumber()
					&& one.getName().equals(getName())
					&& one.getAge() == getAge()) {
				return true;
			}
		}
		return false;
	}

	public static void main(String[] args) {
		Student student = new Student(101, "Tom", 20);

		// 普通测试 name 不为 Jack 的方法
		if (!(student.getName() != null && student.getName().equals("Jack"))) {
			System.out.println("普通测试:student 对象 name 值不为 Jack");
		}

		// JUnit 测试 name 不为 Jack 的方法
		Assert.assertEquals("JUnit 测试:student 对象 name 值不为 Jack", "Jack",
				student.getName());
	}
}

class TestObject {
	public static void main(String[] args) {
		Student one = new Student(101, "Jack", 20);
		Student another = new Student(101, "Tom", 20);
		
		// 普通测试两个对象是否 equals 方法
		if (!one.equals(another)) {
			System.out.println("普通测试:one not equals another");
		}
		
		// JUnit 测试两个对象是否 equals 方法
		Assert.assertEquals("JUnit 测试:one not equals another", one, another);
		// 或者
		Assert.assertTrue(one.equals(another));
	}
}


测试案例(TestCase)
import junit.framework.TestCase;

public class TestCaseTest extends TestCase {
	public TestCaseTest(String name) {
		super(name);
	}
	
	public void testGetMethod() {
		Student student = new Student(101, "Jack", 20);
		assertEquals(101, student.getNumber());
		assertEquals("Tom", student.getName());
		assertEquals(20, student.getAge());
	}
	
	public void testSetMethod() {
		Student student = new Student();
		student.setNumber(101);
		student.setName("Tom");
		student.setAge(20);
		assertEquals(101, student.getNumber());
		assertEquals("Jack", student.getName());
		assertEquals(20, student.getAge());
	}
}


import java.util.Enumeration;
import junit.framework.TestCase;
import junit.framework.TestResult;

public class TestCaseMain {
	public static void main(String[] args) {
		TestCase tc1 = new TestCaseTest("TestGet"){
			// 使用匿名类重新定义 runTest() 方法,TestCase 的 run 方法会自动调用 runTest() 方法
			protected void runTest() {
				testGetMethod();
			}
		};
		showResult(tc1.run());
		
		TestCase tc2 = new TestCaseTest("TestSet"){
			protected void runTest() {
				testSetMethod();
			}
		};
		showResult(tc2.run());
	}
	
	// TestResult 里面保存了一些测试结果,可以手工控制显示这些信息
	public static void showResult(TestResult result) {
		if (result.errorCount() > 0) {
			System.out.println("error: " + result.errorCount());
			Enumeration error = result.errors();
			while(error.hasMoreElements()) {
				System.out.println(error.nextElement());
			}
		}
		
		if (result.failureCount() > 0) {
			System.out.println("failure: " + result.failureCount());
			Enumeration failure = result.failures();
			while(failure.hasMoreElements()) {
				System.out.println(failure.nextElement());
			}
		}
	}
}


测试套件(TestSuite)

public class TestSuitMain {
	public static void main(String[] args) {
		// 直接利用 Reflection 机制测试所有的 test 开头的方法
		
		// 文字显示调试工具
		junit.textui.TestRunner.run(TestCaseTest.class);
		
		// 图形显示调试工具 - awt
		junit.awtui.TestRunner.run(TestCaseTest.class);
		
		// 图形显示调试工具 - swing
		junit.swingui.TestRunner.run(TestCaseTest.class);
	}
}



测试设备(TestFixture)

import junit.framework.TestCase;

public class TestFixtureTest extends TestCase {
	
	Student student;
	
	public TestFixtureTest(String name) {
		super(name);
	}
	
	// 设定测试初始化参数,或者是加载 Spring 配置等操作
	public void setUp() throws Exception {
		super.setUp();
		student = new Student(101, "Jack", 20);
	}
	
	// 释放占用资源或者数据库连接等操作
	public void tearDown() throws Exception {
		super.tearDown();
		student = null;
	}
	
	public void testGetMethod() {
		assertEquals(101, student.getNumber());
		assertEquals("Mike", student.getName());
		assertEquals(20, student.getAge());
	}
	
}


public class TestFixtureMain {
	public static void main(String[] args) {
		// 直接调用测试工具测试
		junit.textui.TestRunner.run(TestFixtureTest.class);
	}
}


failure and error
failure 是指断言结果为 false,也就是预期应该成功的失败了
error 是意料之外的异常,这种异常通常是没有考虑到的,例如数组下标越界等
分享到:
评论
4 楼 hello_player 2011-01-27  
这些全是单个的类,放到同一个包里面加个包名就能用,所以我就没有搞下载,有需要的直接找我吧。
3 楼 田智伟 2011-01-21  
为什么没有下载呀!
2 楼 hello_player 2011-01-12  
不一定啊,我一般写后台都会根据不同的模块写相应的测试类进行测试。也可能是习惯问题。
1 楼 HeroXuan 2011-01-11  
有一定规模,需要量化成果,测试服用,搞这个比较合适,如果项目比较小,没必要这样费事

相关推荐

    Junit使用说明 详细

    《Junit使用详解》 Junit,作为Java编程语言中最为广泛应用的单元测试框架,它为开发者提供了方便快捷的方式来编写和执行单元测试,确保代码的正确性和稳定性。本指南将详细解析Junit的使用方法,旨在帮助开发者...

    junit使用指南及作业规范.pdf

    ### JUnit使用指南及作业规范知识点详解 #### 1. JUnit总览 ##### 1.1 简介 JUnit是由Erich Gamma和Kent Beck共同开发的一个回归测试框架,主要用于进行程序员测试(即所谓的白盒测试)。JUnit的官方网站位于...

    Junit使用手册.pdf

    ### Junit使用手册详解 #### 一、Junit简介与特性 JUnit,作为一款由Erich Gamma和Kent Beck设计的回归测试框架,专为Java开发者提供了编写和执行单元测试的强大工具。它是一款开源的Java测试框架,属于xUnit家族...

    Junit使用教程文档(7页)

    总的来说,本7页的"JUnit使用教程"文档将引导你逐步掌握JUnit的基本用法,包括创建测试类、编写测试方法、使用断言以及运行测试。通过学习和实践,你将能够在开发过程中有效地运用单元测试,提升代码质量并减少bug的...

    JUnit使用指南及作业规范.rar

    Eclipse Eclipse 中使用 junit junitjunit (有了开发工具对 (有了开发工具对 junit的支持后) .... ... 8 JUNIT 4.X4.X4.X使用 .... .... .... ......... 12 下载与安装 下载与安装 .... .... .... ...... 12 ...

    Junit使用说明文档

    **Junit使用说明文档** **一、Junit简介** JUnit是一款广泛应用于Java编程语言的单元测试框架,由Ernst Konig和Kent Beck在2000年开发。它是XUnit系列测试框架的一员,旨在帮助开发者对代码进行快速、可靠且可重复...

    JUnit使用说明(完整)

    同时,虽然JUnit可以独立于集成开发环境(IDE)使用,但Eclipse是一个非常流行的选择,因为它内置了对JUnit的支持,特别是从Eclipse 3.2版本开始就支持JUnit 4。这里以Eclipse Helios (3.6) for Java EE为例,讲解...

    Bosent_Junit使用

    Bosent Junit 使用 Bosent Junit 使用是指在 Bosent 环境中使用 Junit 进行单元测试的方法。Junit 是一个流行的 Java 单元测试框架, 可以帮助开发者快速、方便地编写单元测试用例。 启动方式 Bosent Junit 使用的...

    软件单元测试——JUnit使用

    "软件单元测试——JUnit使用" 软件单元测试是软件开发过程中的一种测试方法,它是指对软件中的最小单元进行测试,以确保软件的可靠性和正确性。JUnit是一个流行的Java测试框架,广泛应用于软件单元测试中。 在本...

    JUnit使用ANT格式化生成html测试报告

    在“JUnit使用ANT格式化生成html测试报告”的主题中,我们需要了解以下几个关键知识点: 1. **JUnit测试框架**:JUnit是Java的一个单元测试库,它提供了断言方法来验证代码的行为,以及注解来标记测试方法。例如,`...

    junit使用简明手册.rar

    《JUnit使用简明手册》是针对Java开发人员的一份实用指南,主要涵盖了如何有效地使用JUnit进行单元测试。JUnit是一款广泛使用的开源测试框架,它简化了Java应用的单元测试过程,帮助开发者确保代码的质量和可靠性。...

    Junit使用教程 测试教程 使用入门

    Junit使用教程 测试教程 使用入门 JUnit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。它是用于单元测试框架体系xUnit的一个实例(用于Java语言)。以下是JUnit的特性: 1.断言(Assertion):...

    软件测试 Eclipse JUnit使用

    ### 软件测试之Eclipse与JUnit使用详解 #### 一、JUnit简介与安装 JUnit 是一个流行的单元测试框架,主要用于 Java 编程语言。它最初由 Erich Gamma 和 Kent Beck 创建,目的是帮助开发者编写可靠的软件代码。通过...

    Junit使用:适合初学者使用

    **JUnit使用指南:初学者入门** JUnit是一款广泛应用于Java编程中的单元测试框架,它使得开发者能够轻松编写和执行测试用例,确保代码的正确性。本文将深入介绍JUnit的基础知识和使用方法,帮助初学者快速上手。 #...

    junit使用指南及作业规范

    ### JUnit使用指南及作业规范知识点详解 #### 1. JUnit总览 ##### 1.1 简介 JUnit是由Erich Gamma和Kent Beck共同开发的一个回归测试框架,主要用于Java程序的单元测试。JUnit属于白盒测试类型,允许开发者编写...

    Junit使用入门培训(初级篇)1

    JUnit 使用入门培训(初级篇)1 JUnit 是 Java 语言中最流行的单元测试框架之一,它提供了许多功能强大且灵活的测试工具,帮助开发者编写高质量的代码。本文将从基础开始,指导读者如何使用 JUnit 进行单元测试。 ...

    单元测试代码以及junit使用介绍

    1. 测试注解:JUnit使用注解(如@Test、@Before、@After)来标记测试方法和生命周期方法。例如,@Test注解表示这是一个测试方法,而@Before和@After注解用于在每个测试方法执行前后运行一些设置和清理工作。 2. ...

    JUnit使用报告

    《JUnit使用报告——测试驱动开发的艺术》 在软件开发领域,测试是不可或缺的一环,而JUnit作为Java编程语言中的一个核心测试框架,为开发者提供了强大的单元测试能力。本报告将详细探讨JUnit的基本概念、使用方法...

Global site tag (gtag.js) - Google Analytics