单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。

开发者编写一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。

通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

JUnit的主要用途即是单元测试

使用eclipse自动生成JUnit4的测试代码:

public class Math {
public Math(){
System.out.println("init");
} public int add(int a,int b){
return a+b;
}
}

右键需要测试的java类 -> New -> JUnit Test Case:

会弹出下面的选择框,注意要选择New JUnit 4 test,即JUnit4:

测试类的存放路径(Source folder)为:Test/src

测试类的存放包为(Package):com

第二个红框中的method stub需要特别说明一下:

setUpBeforClass:生成@BeforeClass注解方法

setUp:生成@Before注解方法

tearDownAfterClass:生成@AfterClass注解方法

tearDown:生成@After注解方法

先将这4个方法都选中,点击Next,可以选择需要生成测试代码的方法,包含当前类和父类的所有方法:

然后选择Finish,在选定的位置会自动生成测试类:

测试类的名称为:被测试类名称+Test

生成的类内容如下,测试方法的名称为:test+被测试方法名

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test; public class MathTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
} @AfterClass
public static void tearDownAfterClass() throws Exception {
} @Before
public void setUp() throws Exception {
} @After
public void tearDown() throws Exception {
} @Test
public void testAdd() {
fail("Not yet implemented");
}
}

特别需要注意的地方:

1,org.junit.Assert.*为静态引入,使用其中包含的静态方法时,不需要加上相应的类名,方便了不少

2,测试方法初始为测试失败,需要手动修改测试内容

public class MathTest {
private Math math = new Math();
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("BeforeClass");
} @AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("AfterClass");
} @Before
public void setUp() throws Exception {
System.out.println("Before");
} @After
public void tearDown() throws Exception {
System.out.println("After");
} @Test
public void testAdd() {
System.out.println("test1");
assertEquals(5,math.add(2, 3));
} @Test
public void testAdd1() {
System.out.println("test2");
assertTrue(math.add(1, 1) == 2);
}
}

选中测试类,右键 -> Run As -> JUnit Test

测试结果为:

BeforeClass
init
Before
test1
After
init
Before
test2
After
AfterClass

通过测试结果可以很清楚的看到注解的执行顺序为:@BeforeClass > @Before > @After > @AfterClass

每个测试方法运行前都会执行@Before注解方法,运行后都会执行@After注解方法

@BeforeClass只在测试类运行前执行,@AfterClass只在测试类执行结束后执行

这里面会有2个init,原因参见@Test注解说明

JUnit4简要说明的更多相关文章

  1. JUnit4的使用

    JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写. 先简单解释一下什么是Annotation,这个单词一般是翻译成元数据.元数据 ...

  2. 【Java】在Eclipse中使用JUnit4进行单元测试(初级篇)

    本文绝大部分内容引自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能 ...

  3. 在Eclipse中使用JUnit4进行单元測试(0基础篇)

    本文绝大部分内容引自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写成千上万个方法或函数,这些函数的功能可能 ...

  4. 在Eclipse在使用JUnit4单元测试(0基础知识)

    自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写成千上万个方法或函数.这些函数的功能可能非常强大,但我们在 ...

  5. 如何使用junit4写单元测试用例(转)

    JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写. 先 简单解释一下什么是Annotation,这个单词一般是翻译成元数据.元数 ...

  6. Java单元测试初体验(JUnit4)

    什么是单元测试 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的.但是,我们同时应 ...

  7. junit4 详解

    转:http://www.cnblogs.com/eggbucket/archive/2012/02/02/2335697.html JUnit4概述 JUnit4是JUnit框架有史以来的最大改进, ...

  8. 在eclipse中使用JUnit4,以及使用JUnit4进行单元测试的技巧

    一 在eclipse中使用JUnit4 首先在工程上右键,选择属性,找到Java Builder Path,添加JUnit4的lib,如下图:   在要测试的类上右键新建 Junit test cas ...

  9. junit4进行单元测试

    一.前言 提供服务的时候,为了保证服务的正确性,有时候需要编写测试类验证其正确性和可用性.以前的做法都是自己简单写一个控制层,然后在控制层里调用服务并测试,这样做虽然能够达到测试的目的,但是太不专业了 ...

随机推荐

  1. GridView導出Excel 解決亂碼問題

    Response.Clear(); Response.Charset = "gb2312"; Response.Buffer = true; Response.AddHeader( ...

  2. NOI2011道路修建

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1974  Solved: 550[Submit][Status ...

  3. 创建通用型framework

    http://years.im/Home/Article/detail/id/52.html http://www.cocoachina.com/industry/20131204/7468.html ...

  4. LVS与其他负载均衡软件的区别

    有人在邮件列表问haproxy的作者为何haproxy无论是tcp模式还是http模式,能支撑的并发量都不是太大. Willy回答了这个问题.   Exactly. The difference is ...

  5. Setting Up the ADT Bundle

    Setting Up the ADT Bundle The ADT Bundle provides everything you need to start developing apps, incl ...

  6. 速冻熟食制品的QS的申请办法

    QS审核流程许可证申办程序食品生产加工企业按照下列程序申请获得食品生产许可证:1.食品生产加工企业按照地域管辖和分级管理的原则,到所在地的市(地)级以上质量技术监督部门提出办理食品生产许可证的申请:2 ...

  7. C# 日期转换为中文大写

    /// <summary> /// 日期转换为中文大写 /// </summary> public class UpperConvert { public UpperConve ...

  8. Code First to an Existing Database

    Code First to an Existing Database https://msdn.microsoft.com/en-us/data/jj200620 https://weblogs.as ...

  9. 【转】Getting xrdp to work on CentOS 6.4

    vi /etc/selinux/config SELINUX=disabled reboot Step 1: #rpm -Uvh http://pkgs.repoforge.org/rpmforge- ...

  10. python学习(4)

    python(4)4.1 高阶函数:map/reduce map:实际上map也是一个函数,只不过他可以在参数里面包含别的函数.他有两种参数:第一种:函数(作用在后面要说的序列上),第二种:一个序列  ...