Junit快速入门

Q:Junit是什么?

JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。[1-2]
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

通俗的话来说,Junit可以指定运行整个程序的局部代码运行。
单元测试的意义何在?
①功能是通过许多单元模块实现的,一个单元模块出错很可能会导致所有依赖该模块的功能出错,因功能与单元模块依赖关系导致的错误扩散速度是十分惊人的。软件开发时,一个错误发现的越晚,为改正它所付出的代价,单元测试则是想尽可能早地发现错误。
②证明你自己的模块没有错,担责甩锅的话不觉得这很重要吗?
③”优秀”程序员的强迫症—就好像汽车厂生产汽车了不进行碰撞试验你能忍?

Q:Junit jar下载/所需依赖

Junit jar 下载页链接

Maven依赖声明示例
pom.xml

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>

Q:Junit4的使用

Tip:
Junit 早期和Junit4的使用方法有较大出入,本文仅示范Junit 4.X版本

Junit4 常见注解:
@Before:在当前测试类每个测试方法前执行
@After:在当前测试类每个测试方法后执行
@Test:标识标记下方为测试方法
@Ignore:忽略的测试方法
@BeforeClass:在当前测试类所有测试方法前执行一次,且必须为static void
@AfterClass:在当前测试类所有测试方法后执行一次,且必须为static void

执行顺序举个栗子:
测试类 A中 有
@BeforeClass @AfterClass
测试类B中 有
@BeforeClass @AfterClass @Before @After @Test

(不推荐继承写法,虽然博主也不知道具体原因)

测试类B继承测试类A
运行测试类B 执行顺序如下 ↓
A的@BeforeClass方法
B的@BeforeClass方法
B的@Before方法
B的@Test方法
B的@After方法
B的@AfterClass方法
A的@AfterClass方法

个人认为这些说明已经十分明确了,简单的示例就不仔细演示了,细节顺序你们可以自己试

标记使用示例:


import com.xavier.Test2;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.*;

/**
 * 描述信息:<br/>
 *
 * @author Xavier on 16/12/13.
 * @version 1.0
 * @since jdk 1.8
 */
public class Test2Test {

    @Before
    public void winit() {
        System.out.println(">>>>>>test2 Every");
    }

    @After
    public void wtheEnd() {
        System.out.println("<<<<<<test2 Every");
        System.out.println();
    }

    @Test
    public void method1() throws Exception {
        new Test2().method1();
    }

    @Test
    public void method2() throws Exception {
        new Test2().method2();
    }

    @Test
    public void method3() throws Exception {
        new Test2().method3();
    }

}

多个测试类共用某资源的解决方案:

import com.xavier.PublicResource;
import com.xavier.Test1;
import com.xavier.Test2;
import org.junit.ClassRule;
import org.junit.rules.ExternalResource;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.springframework.test.context.junit4.SpringRunner;

import static org.junit.Assert.*;

/**
 * 描述信息:<br/>
 *
 * @author Xavier on 16/12/13.
 * @version 1.0
 * @since jdk 1.8
 */
@RunWith(Suite.class)
@Suite.SuiteClasses({Test1Test.class, Test2Test.class})// 此处为配置为执行一次测试,测试Test1Test.class、Test2Test.class两个测试类
public class TestAll {

    public static PublicResource publicResource = new PublicResource();// 被多个测试类公用的某资源

    @ClassRule
    public static ExternalResource resource = new ExternalResource() {
        @Override
        protected void before() throws Throwable {
            publicResource.getResource();//多个测试类所有测试方法执行前会执行的代码
        }

        @Override
        protected void after() {
            publicResource.cleanResource();//多个测试类所有测试方法执行完成后会执行的代码
        }
    };
}

运行TestAll测试类
运行TestAll测试类

运行结果
运行结果

Q:官方文档

传送门:Junit GitHub 文档

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值