使用JUnit进行单元测试

栏目: 编程工具 · 发布时间: 5年前

内容简介:从官网www.junit.org 下载 JUnit 最新版本的压缩文件。笔者使用Maven(Java包管理工具)导入所需要的jar包:测试代码和生成代码分开放置,Maven默认目录正好符号这个要求。

从官网www.junit.org 下载 JUnit 最新版本的压缩文件。

笔者使用Maven(Java包管理工具)导入所需要的jar包:

<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
复制代码

基本用法

测试代码和生成代码分开放置,Maven默认目录正好符号这个要求。

使用JUnit进行单元测试

被测试代码放在 main 下的 java 目录中,junit测试代码放在 test 下的 java 目录中,形成一一对应关系,测试代码使用 Test 开头命名。

被测试 MessageDemo 代码:

使用JUnit进行单元测试

测试 TestMessageDemo 代码:

使用JUnit进行单元测试

基本的已经写好了,但是如何运行测试呢? 还需要建一个运行测试的文件:

使用JUnit进行单元测试

好了,运行测试:

使用JUnit进行单元测试

看到 true 表明测试成功,那么我们来尝试一下测试不成功是什么情况。

修改 TestMessageDemo 代码:

使用JUnit进行单元测试

重新运行测试:

使用JUnit进行单元测试

测试结果为 false ,并且指明了期望输出的结果 No 和实际输出的结果 HelloWorld

JUnit 断言

什么是断言?刚开始我也很困惑,后来搞了大半天才明白断言就是"判断"。

Junit所有的断言都包含在 Assert 类中。

这个类提供了很多有用的断言方法来编写测试用例。只有失败的断言才会被记录。Assert 类中的一些有用的方法列式如下:

void assertEquals(boolean expected, boolean actual)
void assertTrue(boolean expected, boolean actual)
void assertFalse(boolean condition)
void assertNotNull(Object object)
void assertNull(Object object)
void assertSame(boolean condition)
void assertNotSame(boolean condition)
void assertArrayEquals(expectedArray, resultArray)

JUnit 注解

@Test
@Before
@After
@BeforeClass
@AfterClass
@Ignore

JUnit 加注解执行过程

beforeClass()
afterClass()
before()
after()

JUnit 执行测试

测试用例是使用 JUnitCore 类来执行的。JUnitCore 是运行测试的外观类。要从命令行运行测试,可以运行 java org.junit.runner.JUnitCore 。对于只有一次的测试运行,可以使用静态方法 runClasses(Class[])

JUnit 套件测试

测试套件意味着捆绑几个单元测试用例并且一起执行他们。在 JUnit 中, @RunWith@Suite 注释用来运行套件测试。

被测试 MessageDemo 代码:

使用JUnit进行单元测试

新建两个测试类,用来展示套件测试:

测试 TestMessageDemo 代码:

使用JUnit进行单元测试

测试 TestMessageDemo2 代码:

使用JUnit进行单元测试

TestSuite 代码:

使用JUnit进行单元测试

TestRunner 代码:

使用JUnit进行单元测试

测试结果:

使用JUnit进行单元测试

通过这样的方式,我们就可以一次运行多个测试了,看起来也不是很复杂哦!

JUnit 时间测试

如果一个测试用例比起指定的毫秒数花费了更多的时间,那么 Junit 将自动将它标记为失败。 timeout 参数和 @Test 注释一起使用。是不是很强大?

就像这样:

@Test(timeout=1000)
复制代码

时间单位是毫秒。

JUnit 异常测试

Junit 用代码处理提供了一个追踪异常的选项。你可以测试代码是否它抛出了想要得到的异常。 expected 参数和 @Test 注释一起使用。

比如这样:

@Test(expected = ArithmeticException.class)
复制代码

JUnit 参数化测试

Junit 4 引入了一个新的功能参数化测试。参数化测试允许开发人员使用不同的值反复运行同一个测试。你将遵循 5 个步骤来创建参数化测试。

@RunWith(Parameterized.class)
@Parameters

一旦每一行数据出现测试用例将被调用。

参数化测试例子

被测试代码 PrimeNumberChecker :

使用JUnit进行单元测试

测试代码 TestPrimeNumberChecker

使用JUnit进行单元测试

测试运行代码 TestRunner

使用JUnit进行单元测试

测试运行结果:

使用JUnit进行单元测试

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java核心技术及面试指南

Java核心技术及面试指南

金华、胡书敏、周国华、吴倍敏 / 北京大学出版社 / 2018-9-1 / 59.00

本书根据大多数软件公司对高级开发的普遍标准,为在Java 方面零基础和开发经验在3 年以下的初级程序员提供了升级到高级工程师的路径,并以项目开发和面试为导向,精准地讲述升级必备的技能要点。具体来讲,本书围绕项目常用技术点,重新梳理了基本语法点、面向对象思想、集合对象、异常处理、数据库操作、JDBC、IO 操作、反射和多线程等知识点。 此外,本书还提到了对项目开发很有帮助的“设计模式”和“虚拟......一起来看看 《Java核心技术及面试指南》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试