什么是单元测试?
写了个类,要给别人用,会不会有Bug?怎么办?测试
用main方法测试好不好?不好
1.不能一起运行
2.大多数情况下需要人为的观察输出是否正确
为什么要进行单元测试?
重用测试,应付将来的实现的变化
提高士气,明确知道我的东西是没问题的
JUnit4 HelloWorld
1.new Project
2.建立类
public class T {
public int add(int x , int y){
return x + y;
}
}
3.建立testCase
创建一个新的Junit 4 Test Case,选择junit4,选择要测试的类,next
勾上要测试的方法,点finish
会提示是否要导入junit4的jar包,如果想使用MyEclipse自带的,点ok即可
之后会生成如下代码:
import static org.junit.Assert.*;
import org.junit.Test;
public class TTest {
@Test
public final void testAdd() {
fail("Not yet implemented"); // TODO
}
}
静态导入了Assert类的所有静态断言方法,fail()只是其中一种
修改下自动生成的testAdd()方法:
@Test
public final void testAdd() {
int z = new T().add(3, 5);
assertEquals(8, z);
}
assertEquals(期望得到的值,实际的值),此时我们希望测试T类的add()方法, 3 + 5 是否等于8
之后,右键,Run as ,JUnit Test运行测试
左边的小窗口为JUnit,会看到一个绿色的“条”,则表示测试通过,这个方法没问题
现在我们修改testAdd()方法:
此时,z不等于9,左边的“条”就变成红色,表示不通过
还可以写多个断言一起进行测试,其中每个断言方法,
都重载了一个(String message) 代表如果出错了,会提示什么消息
@Test
public final void testAdd() {
int z = new T().add(3, 5);
assertEquals(8, z);
assertTrue("z大于8", z > 8 );
}
----------------------------------------
一种新的测试方法:assertThat()
使用它时,需要下载jar包:hamcrest-all-1.3.0RC2.jar
如果用MyEclipse自带的JUnit4的jar包,会产生冲突,
测试时,会报一个Security的异常,ClassLoader() 原因是加载类的加载器不同
所以单独下载JUnit4的jar包并导入: junit-4.10.jar
@Test
public final void testAdd() {
int z = new T().add(3, 5);
assertEquals(8, z);
assertTrue("z大于8", z >= 8 );
assertThat(z, is(8)); //测试这个对象是否等于8
assertThat(z, allOf(greaterThan(5),lessThan(10))); //判断z 大于5并且小于10
}
具体方法信息查看API http://www.jmock.org/javadoc/2.3.0/org/hamcrest/Matchers.html
---------------------------------------------
Failure 和 Error区别:Failure是测试失败,Error是指程序本身出错
比如调用 assertTrue("z大于8", z >= 8 ) 方法,如果不是 z>=8 时,会显示Failure
如果 在testAdd() 方法内,写 int i = 1/0; 此时会显示Error
执行多个测试方法:
自定义测试方法:@Test
public void testDivide(){}
执行JUnit Test时,会一起测试这个类中所有方法
@Test的属性:
@Test(expected=java.lang.ArithmeticException.class) //希望他抛出异常
public void testDevide(){
int z = new T().devide(3, 0); //除数为0
assertThat(z, is(0));
}
此时测试会通过
@Test(timeout = 100) //在100毫秒内运行结束这个方法
用来测试一些算法等,如果100毫秒内完成了这个方法的执行,则通过
@Ignore:被忽略的测试方法,在方法前写上它,执行测试时,标志这个方法不被测试
@Before:每一个测试方法之前运行
@After:每一个测试方法之后运行
----------------------------------
@BeforeClass:所有测试开始之前运行
@AfterClass:所有测试结束之后运行
@BeforeClass 和 @AfterClass必须为static:
类初始化之前就已经执行了,他们的作用:配置环境,打开连接,关闭、释放连接等
分享到:
相关推荐
JUnit4入门教程
### Junit4入门使用介绍 #### 一、简介 JUnit4是JUnit框架的第四代版本,它是Java领域中最广泛使用的单元测试框架之一。相比于之前的版本,JUnit4引入了许多新的特性和改进,使得编写和执行单元测试变得更加灵活和...
《Junit4 入门详解》 JUnit 是一个用于Java编程语言的单元测试框架,而Junit4作为其第四代版本,引入了许多新特性和改进,使得测试代码更加简洁、可读性强,大大提升了测试效率。这篇教程将带你走进Junit4的世界,...
Junit4作为Java领域最常用的单元测试框架,为开发者提供了方便、高效的测试工具。本文将深入探讨如何使用Junit4对名为Calculate的类进行单元测试,包括其加减乘除四个方法。 首先,我们需要了解Junit4的基本结构和...
使用JUnit4时,需要注意你的JDK版本应为1.5或更高,因为JUnit4依赖于Java的新特性。 JUnit的核心特点和结构包括: 1. 断言(Assertion):用于验证测试结果是否符合预期。 2. 测试套件(Test Suite):可以组织多个...
JUnit4单元测试必备入门教程 JUnit4概述 -------- JUnit4是JUnit框架有史以来最大的改进,其主要目标是利用Java5的Annotation特性简化测试用例的编写。Annotation是一种元数据,用于描述数据。在Java中可以用来和...
在Eclipse中,有两种方式添加Junit4库: 1. **添加Eclipse自带的Junit4**:进入项目属性页,选择Java Build Path,点击Add Library,接着在弹出的对话框中选择JUnit并选择相应的版本,最后点击Finish。如图2.1所示...
本文将深入探讨JUnit入门培训的关键概念和技术。 首先,我们要理解什么是Test Driven Development(TDD),即测试驱动开发。TDD是一种软件开发方法论,它提倡在编写实际业务代码之前先编写测试。通过这种方式,...
【jUnit入门教程 - jUnit教程】 jUnit是一款广泛应用于Java编程语言的单元测试框架,它使得开发者能够方便地编写和执行针对代码功能的测试用例。本教程旨在为初学者提供一个jUnit的基础入门指南,帮助理解如何利用...
在“JUnit4入门学习笔记.doc”这份文档中,我们可以期待找到以下关键知识点: 1. **JUnit介绍**:首先会介绍JUnit的基本概念,包括它的起源、目标以及在软件开发中的地位,以及与其它测试框架的比较。 2. **环境...
“入门级学习材料”表明这个压缩包可能是为初学者准备的,涵盖了如何使用JUnit4框架创建和运行测试的基本步骤。Eclipse开发环境是一个流行的Java集成开发环境,它支持JUnit插件,使得在Eclipse中编写和运行JUnit测试...
本资源“Junit入门练习代码”旨在帮助初学者掌握JUnit的基本概念和使用方法,通过实践来加深理解。下面我们将深入探讨JUnit的相关知识点。 1. **JUnit简介**:JUnit是Java语言中的一个开源测试框架,由Ernst Leiss...
### JUnit5学习入门知识点详解 #### 一、JUnit简介 JUnit是一个开源的Java单元测试框架,被广泛应用于软件开发中的测试驱动开发(TDD)流程之中。它支持开发者通过编写测试代码来验证软件功能是否符合预期,从而提高...
JUnit 使用入门培训(初级篇)1 JUnit 是 Java 语言中最流行的单元测试框架之一,它提供了许多功能强大且灵活的测试工具,帮助开发者编写高质量的代码。本文将从基础开始,指导读者如何使用 JUnit 进行单元测试。 ...
本资源包含“JUnit API和入门手册”以及“JUnit In Action”电子书,将帮助你深入理解和掌握JUnit的核心概念和使用方法。 首先,`JUnit4.1.chm`文件是JUnit 4.1版本的API参考文档,通常包含了类、接口、方法等详细...
JUnit 4是该框架的一个重要版本,它利用Java 5的注解(Annotation)特性极大地简化了测试用例的编写过程。 在介绍JUnit 4之前,我们先来看一下JUnit 3的测试用例编写方式。在JUnit 3中,单元测试的编写需要遵循一定...
### Junit入门培训资料(断言相关):深入解析与应用 #### Junit概述与重要性 JUnit,作为由Kent Beck和Erich Gamma共同开发的开源Java测试框架,已成为Java开发人员进行单元测试的首选工具。它不仅是Java编程语言...