单元测试(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. BZOJ_1610_[Usaco2008_Feb]_Line连线游戏_(计算几何基础+暴力)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1610 给出n个点,问两两确定的直线中,斜率不同的共有多少条. 分析 暴力枚举直线,算出来斜率放 ...

  2. Go语言程序的状态监控 via 达达

    Go语言程序的状态监控 Go是很实在的编程语言,从一开始就提供了很详细的运行状态信息.产品上线后的调优和排查疑难杂症都得靠这些状态信息.这边总结一些我们项目里用到的状态监控手段. pprof Go自带 ...

  3. 关于ButterKnife 8.1.0使用遇到的问题

    ButterKnife注解方式 和eventbus 差不多 都很好用 @OnClick(R.id.button) void onButtonClick() { //TODO implement Toa ...

  4. 数学物理学报Offprints and Remuneration

  5. LightOJ 1220 Mysterious Bacteria 水题

    暴力就行了,找出素因子,正的最多是30,然后负的最多是31(这一点wa了一次) #include <cstdio> #include <iostream> #include & ...

  6. hunnu---11547 你的组合数学学得如何?

    解析:比较简单的DP,从左向右一个一个连续着放,dp[X][Y]表示到第X个硬币的时候Y状态的方案数,Y=0表示x左边那个不是正面的,Y=1表示x左边那个是正面 如果左边不是正面,那么当前放正面的就把 ...

  7. [Irving]SQL去重复-DISTINCT用法

    在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 distinct用于返回唯一不同的值. 表A: 示例1 select distinct nam ...

  8. Android完全退出应用程序,完美解决方案

    最近公司工作不是很忙,就抽空研究了下Android的引导页,但是在写完引导页并且进入到住页面之后,在退出时,采用"再按一次退出"的方式去实现的,用的方式是杀掉进程跟exit,即:a ...

  9. 关于Windows Azure的常见问题-执行与维护FAQ

    执行与维护 使用虚拟机运行业务应用有什么需要注意的地方? Windows Azure 会周期性地更新主机环境,以确保平台上运行的所有应用程序和虚拟机始终处于安全的环境.此更新过程可能会导致您的虚拟机重 ...

  10. Linux设备驱动编程中的中断与定时器处理

    所谓中断是指CPU在执行过程中,出现某些突发时间急待处理,CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行. 中断分为(根据中断源来分):  内部中断 ...