文档章节

深入探索:单元测试之Assertions

灯-塔
 灯-塔
发布于 2017/09/10 16:10
字数 760
阅读 215
收藏 5
点赞 0
评论 0

相关文章

assert 简述

JUnit 为全部的基本类型、对象 以及数组(包括基本类型和对象),参数顺序是期望值,后面跟随的是实际结果值。第一个参数是可选的,是在测试失败的时候输出的字符串信息。此外,这里还有一个不同于Assert 的,那就是assertThat, 它具有可选的失败消息参数实际值,和一个匹配对象。这里有一点需要注意的,那就是参数,assertThat 的参数是与其他assert 的参数是反过来的,比如assertEquals("failure - strings are not equal", "期望值", "实际结果值"); assertThat("实际结果值", 期望匹配值);

举例

使用Junit 需要一些jar 包,maven 的依赖如下:

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>org.hamcrest</groupId>
		    <artifactId>hamcrest-all</artifactId>
		    <version>1.3</version>
		    <scope>test</scope>
		</dependency>

下面提供一些比较有代表性的assert例子:

import static org.hamcrest.CoreMatchers.allOf;
import static org.hamcrest.CoreMatchers.anyOf;
import static org.hamcrest.CoreMatchers.both;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.everyItem;
import static org.hamcrest.CoreMatchers.hasItems;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.sameInstance;
import static org.hamcrest.CoreMatchers.startsWith;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;

import java.util.Arrays;

import org.hamcrest.core.CombinableMatcher;
import org.junit.Test;

public class AssertTests {
  @Test
  public void testAssertArrayEquals() {
    byte[] expected = "trial".getBytes();
    byte[] actual = "trial".getBytes();
    assertArrayEquals("failure - byte arrays not same", expected, actual);
  }

  @Test
  public void testAssertEquals() {
    assertEquals("failure - strings are not equal", "text", "text");
  }

  @Test
  public void testAssertFalse() {
    assertFalse("failure - should be false", false);
  }

  @Test
  public void testAssertNotNull() {
    assertNotNull("should not be null", new Object());
  }

  @Test
  public void testAssertNotSame() {
    assertNotSame("should not be same Object", new Object(), new Object());
  }

  @Test
  public void testAssertNull() {
    assertNull("should be null", null);
  }

  @Test
  public void testAssertSame() {
    Integer aNumber = Integer.valueOf(768);
    assertSame("should be same", aNumber, aNumber);
  }

  // JUnit Matchers assertThat
  @Test
  public void testAssertThatBothContainsString() {
    assertThat("albumen", both(containsString("a")).and(containsString("b")));
  }

  @Test
  public void testAssertThatHasItems() {
    assertThat(Arrays.asList("one", "two", "three"), hasItems("one", "three"));
  }

  @Test
  public void testAssertThatEveryItemContainsString() {
    assertThat(Arrays.asList(new String[] { "fun", "ban", "net" }), everyItem(containsString("n")));
  }

  // Core Hamcrest Matchers with assertThat
  @Test
  public void testAssertThatHamcrestCoreMatchers() {
    assertThat("good", allOf(equalTo("good"), startsWith("good")));
    assertThat("good", not(allOf(equalTo("bad"), equalTo("good"))));
    assertThat("good", anyOf(equalTo("bad"), equalTo("good")));
    assertThat(7, not(CombinableMatcher.<Integer> either(equalTo(3)).or(equalTo(4))));
    assertThat(new Object(), not(sameInstance(new Object())));
  }

  @Test
  public void testAssertTrue() {
    assertTrue("failure - should be true", true);
  }
}

© 著作权归作者所有

共有 人打赏支持
灯-塔
粉丝 2
博文 39
码字总数 63914
作品 0
广州
程序员
Apache AntUnit 1.2 发布

Apache AntUnit 是一个 Ant 的任务,用来提供单元测试。 实力配置: Changes: Apart from a few bugfixes and added assertions this release allows Ant references to be passed from the......

红薯
2011/08/17
457
0
JavaScript测试框架--YUI Test

YUI测试是一款基于浏览器,提供解决方案的测试框架。使用YUI,您可以方便地添加单元测试,寻求JavaScript解决方案。它是由Yahoo! UI Library开发的一个JavaScriptMVC测试插件,能够让你模范大...

匿名
2010/04/15
2.6K
0
在PHP中使用Mockery进行测试驱动开发(TDD) - 上

测试驱动开发网上也谈了很多了,PHP方面的文章也有一些,在百度和Google里搜,好像没有看到几篇谈用Mock(伪装对象)的技术的,这里写篇文章讲讲。 先过一下测试驱动开发的基本理念:就是先写...

Michaelyn
2015/05/29
0
0
QUnit 1.16 发布,附发布计划

QUnit是jQuery的单元测试框架。 QUnit 1.16 发布,此版本是个重要的版本,引入了一些新 APIs,默认在 QUnit 2.0 使用。 新 APIs 概览: QUnit.test( "assert.async() test", function( asser...

oschina
2014/12/11
902
2
8个实用的 JavaScript 测试及效验工具

JavaScript 是一款强大的广泛运用于现代Web站点及应用的脚本语言。作为一个技艺精湛的 Web 开发者,掌握JavaScript可以增强用户的使用体验,提供交互及富客户端等功能。 尽管JavaScript的语法...

小编辑
2010/04/15
3.9K
0
使用QUnit对javascript进行单元测试

QUnit中API QUnit所有的API可以分为三类:Setup,Assertions,Asynchronous Testing 1、Setup (1)、test( name, [expected], testFun ) 代表QUnit中的一个测试 参数说明 name:要测试的名称,...

学习也休闲
2015/10/28
0
0
JavaScript 测试及校验工具

JavaScript 是一款强大的广泛运用于现代Web站点及应用的脚本语言。作为一个技艺精湛的 Web 开发者,掌握JavaScript可以增强用户的使用体验,提供交互及富客户端等功能。 尽管JavaScript 的语...

晨曦之光
2012/03/09
0
0
Jest 18.1.0 发布,JavaScript 单元测试工具

Jest 18.1.0 发布了,Jest 是 Facebook 开源的无痛 JavaScript 测试工具。Jest 默认使用 Jasmine assertions,模块化,可扩展、可配置。Jest 也可以捕获 React 或其他可序列化值的快照,以便...

王练
2016/12/31
623
0
PHP教程:PHPUnit学习笔记(二)PHPUnit基本用法

上篇日记中我介绍了phpunit的配置方法,今天就开始介绍如何用PHPUnit来编写测试用例,下面我来引入一个测试PHP数组操作的测试用例,这个例子会给你展示PHPUnit常规的用法和测试用例编写的步骤...

peasant
2014/11/07
0
0
Jest 20.0.0 发布,JavaScript 单元测试工具

Jest 20.0.0 发布了,Jest 是 Facebook 开源的无痛 JavaScript 测试工具。Jest 默认使用 Jasmine assertions,模块化,可扩展、可配置。Jest 也可以捕获 React 或其他可序列化值的快照,以便...

王练
2017/05/07
404
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

什么?你的私钥泄漏了?

代码签名是一种当代标准做法,其中软件开发人员通过可信证书颁发机构的验证,并接收可用于签署脚本和可执行文件的证书和私钥。 几乎每个设备,操作系统和网络浏览器都经过硬编码,以尽可能少...

亚洲诚信
7分钟前
1
0
Iterm2安装Zsh + Oh My Zsh+Solarized

安装Oh My Zsh curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh 安装Zsh: 1.安装zsh brew install zsh 2.配置iterm2 sudo vim /etc/shells输入:......

孟飞阳
15分钟前
0
0
缓解ddos攻击的有效解决办法

因为防火墙无法处理所有类型的ddos攻击,下一代防火墙生成内置的DDoS防御,但是无法处理所有类型的攻击。对抗DDoS攻击的最佳做法是有专属的设备或者服务在攻击透过防火墙或者其他的IT基础设施...

上树的熊
16分钟前
0
0
Spark Streaming如何使用checkpoint容错

在互联网场景下,经常会有各种实时的数据处理,这种处理方式也就是流式计算,延迟通常也在毫秒级或者秒级,比较有代表性的几个开源框架,分别是Storm,Spark Streaming和Filnk。 伦理片 http...

刺猬一号
17分钟前
1
0
Xamarin Essentials教程地理定位Geolocation

Xamarin Essentials教程地理定位Geolocation 通过地理定位功能,应用程序可以获取用户的当前地理位置,如经纬度值。利用地理位置,可以在地图上定位,也可以转化物理位置,划分用户的归属地。...

大学霸
30分钟前
0
0
vue 编译警告 Compiled with 4 warnings

There are multiple modules with names that only differ in casing. This can lead to unexpected behavior when compiling on a filesystem with other case-semantic. Use equal casing.......

落雪飞声
34分钟前
0
0
开篇文章,长期记录安全情形

密码位置 密码位于注释中 密码位于服务器端文件中 通过访问根目录下.htaccess、robots.txt查看禁查路径 密码文件可能存在的路径:/、/extra/、/extras/ 密码加密 binary to base16 sha256 彩虹...

hirainn
47分钟前
0
0
mysql数据库设置root可以远程登录的方法

mysql数据库设置root可以远程登录的方法 Posted on 2018-02-21 21:08 sishuisufeng 阅读(161) 评论(0) 编辑 收藏 允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如...

rootliu
52分钟前
1
0
TensorFlow 图的基本操作

图的创建,一般只需要使用默认图就能满足大部分的需求了 # 1 创建图的方法# 在默认图中创建常量c = tf.constant(0.0)# 新建一个图g = tf.Graph()# 设置上下文管理器,标明操作...

阿豪boy
今天
0
0
git 忽略文件失效

git update-index --assume-unchanged */.project

林子大鸟
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部