Junit Java单元测试

Junit是一种java单元测试的工具,让我们的测试提高效率

入门篇

我们先来看一个测试加法add的例子

先创建一个AddOperation的类(我们要测试的类)

package work;

publicclass
AddOperation {

publicint add(int
x,int y){

return x+y;

}

}

给该类添加测试类

详细请看图

选择你要测试的类

package work;

importstatic
org.junit.Assert.*;

import org.junit.AfterClass;

import org.junit.BeforeClass;

import org.junit.Test;

publicclass
AddOperationTest {

@BeforeClass

publicstaticvoid
setUpBeforeClass()throws Exception {

}

@AfterClass

publicstaticvoid
tearDownAfterClass()throws Exception {

}

@Test

publicvoid
testAdd() {

fail("Not yet implemented");

}

}

@是Fixture(暂且翻译为“固定代码段”)标注,用于表明和分类,根据@后面的名字能确定某个方法的作用,它的引入让函数方法的名字可以随便写,编译器根据@来确定方法的用途

下面介绍一些常见的需要熟悉的标注

@Before:

使用了该元数据的方法在每个测试方法执行之前都要执行一次。

@After:

使用了该元数据的方法在每个测试方法执行之后要执行一次。

注意:@Before和@After标示的方法只能各有一个。这个相当于取代了JUnit以前版本中的setUp和tearDown方法,当然你还可以继续叫这个名字,不过JUnit不会霸道的要求你这么做了

@BeforeClass和@AfterClass

在测试用例初始化时执行@BeforeClass方法,当所有测试执行完毕之后,执行@AfterClass进行收尾工作,新的版本一般用@BeforeClass和
@AfterClass代替@Before和@After,对于多个@Test的程序,每次Test之前都会执行@Before,如果要导入一个很大的测试文件,绝大部分时间都花在了导入数据上,而@BeforeClass只要导入数据一次就行,

@Test(expected=*.class)

在JUnit4.0之前,对错误的测试,我们只能通过fail来产生一个错误,并在try块里面assertTrue(true)来测试。现在,通过@Test元数据中的expected属性。expected属性的值是一个异常的类型

@Test(timeout=xxx):

该元数据传入了一个时间(毫秒)给测试方法,

如果测试方法在制定的时间之内没有运行完,则测试也失败。

@ignore:

该元数据标记的测试方法在测试中会被忽略。当测试的方法还没有实现,或者测试的方法已经过时,或者在某种条件下才能测试该方法(比如需要一个数据库联接,而在本地测试的时候,数据库并没有连接),那么使用该标签来标示这个方法。同时,你可以为该标签传递一个String的参数,来表明为什么会忽略这个测试方法。比如:@lgnore(“该方法还没有实现”),在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。

进阶篇

上面的测试只能进行单组测试,如何进行多组测试呢?

下面开始介绍,参考以下代码,差不多算个模板吧。

package work;

//头文件一大堆,想了解更透彻的可以自己上网查资料

importstatic
org.junit.Assert.*;

import java.util.Arrays;

import java.util.Collection;

importorg.junit.After;

importorg.junit.AfterClass;

importorg.junit.Before;

import org.junit.Test;

import org.junit.runners.*;

import org.junit.runners.Parameterized.Parameters;

import org.junit.runner.*;

@RunWith(Parameterized.class)

publicclass
AddOperationTest {

//先建一个要测试的类

privatestatic
AddOperationtemp =new AddOperation();

//测试类要生成的数据

privateinta,b;

privateintresult;

@Parameters

publicstaticCollection
data(){//测试数据都放在这里

//Object是一个二维对象,第一维表示可以多组测试

//还有一维,分别放了输入数据,结果数据(输入,输出数据可能都有多个)

//这里输入数据有两个,输出数据有一个

return Arrays.asList(new Object[][]{

{1, 2, 3},

{2, 3, 4},

{3, 4, 5}

});

}

//构造函数,对变量进行初始化,这个函数会多次调用,

//每次调用自动读取Collection
data内的一组数据

public
AddOperationTest(int a,
int b,int result){

this.a
= a;

this.b
= b;

this.result
= result;

}

@Test

publicvoid
test() {//测试,自动捕捉不正确的测试数据

assertEquals(result,temp.add(a,b));

}

}

点击运行

看运行结果,测试组数编号从0开始,第0组通过(绿色表示通过), 第1, 2组没有通过(红色表示没通过)

如果全部通过,总的进度条会变绿,自己可以动手试一下。

Junit Java单元测试

时间: 2024-10-19 14:44:56

Junit Java单元测试的相关文章

Java单元测试(Junit+Mock+代码覆盖率)

原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 一般来说,单元测试任务包括 接口功能测试:用来保证接口功能的正确性. 局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 比如变量有无初始值 变量是否溢出 边界条件测试 变量没有赋值(即为NULL) 变量是数值(或字符) 主要边界:最小值,最大值,无穷大(

Java 单元测试Junit

@Test @Before @After 测试方法运行前执行Before动作(比如创建资源),运行后执行After动作(比如销毁资源) @BeforeClass @AfterClass 测试类运行前执行Before动作(比如创建资源),运行后执行After动作(比如销毁资源) Assert 对方法结果进行判断,是否等于希望值,是否为空等 表示测试通过不通过 Java 单元测试Junit,布布扣,bubuko.com

Java单元测试框架 JUnit

Java单元测试框架 JUnit JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于KentBeck的sUnit的xUnit家族中为最成功的一个. JUnit有它自己的JUnit扩展生态圈.多数Java的开发环境都已经集成了JUnit作为单元测试的工具. 在线Javadoc:http://ww...更多JUnit信息 最近更新: JUnit 4.12 发布,Java 单元测试框架 发布于4个月前 C++模拟测试框架 Google Mock

Java 单元测试及JUnit的使用

Java 单元测试: 单元测试是开发者编写的一小段代码,用于检测被测代码的一个很小的.很明确的功能是否正确.  单元测试的方法: 人工静态分析:人工阅读检测代码 自动静态分析:使用代码复查工具检查 自动动态测试:用工具自动生成测试用例并执行被测程序 人工动态测试:人工设定程序的输入和预期输出,执行程序.    Junit 单元测试: 它是人工动态测试 支持语言C++.Java,支持的IDE: Eclipse 功能:用单独的classloader来运行每个单元测试 标准的资源初始化和回收方式(se

Java单元测试Junit的Annotation介绍

单元测试是开发者的业界良心 Java开发中常以Junit作为测试框架,而且Junit也成为Java社区测试方面的事实标准,可以百度一些看看Junit的相关介绍.目前Junit发展到了Junit4.x版本,相对之前的Junit3.x版本有着明显的变化就是使用了Annotation的方式来注解测试用例. 下面是关于Junit4.x的常用注解说明图: Java单元测试Junit的Annotation介绍

Java单元测试(Junit+Mock+代码覆盖率)---------转

Java单元测试(Junit+Mock+代码覆盖率) 原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 一般来说,单元测试任务包括 接口功能测试:用来保证接口功能的正确性. 局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 比如变量有无初始值 变量是否溢出 边界条件测试 变量没有赋值(即为NULL) 变

JUnit + Mockito 单元测试(二)

JUnit 是单元测试框架.Mockito 与 JUnit 不同,并不是单元测试框架(这方面 JUnit 已经足够好了),它是用于生成模拟对象或者直接点说,就是"假对象"的工具.两者定位不同,所以一般通常的做法就是联合 JUnit + Mockito 来进行测试. 入门 首先是配置 Mock 对象,看看例子怎么写的. [java] view plain copy List mock = mock( List.class ); when( mock.get(0) ).thenReturn

JUnit 4 单元测试

Individual Project ——JUnit 4 单元测试 学习到JUnit单元测试,我拿来测试之前写过的一个计算器(两个依存类:Calc.java CalcFunction.java).代码已放到github中. 贴出部分代码: 1 public class Calc extends javax.swing.JFrame{ 2 3 public Calc() { 4 initComponents(); 5 } 6 7 private void initComponents() { 8

使用spring配合Junit进行单元测试的总结

最近公司的项目和自己的项目中都用到了spring集成junit进行单元测试,总结一下几种基本的用法: 1.直接对spring中注入的bean进行测试(以DAO为例): 在测试类上添加@RunWith注解指定使用springJunit的测试运行器,@ContextConfiguration注解指定测试用的spring配置文件的位置 之后我们就可以注入我们需要测试的bean进行测试,Junit在运行测试之前会先解析spring的配置文件,初始化spring中配置的bean @RunWith(Spri