junit.framework包下的Assert提供了多个断言方法. 主用于比较测试传递进去的两个参数.

Assert.assertEquals();及其重载方法: 1. 如果两者一致, 程序继续往下运行. 2. 如果两者不一致, 中断测试方法, 抛出异常信息 AssertionFailedError .

查看源码, 以Assert.assertEquals(int expected, int actual)为例:

/*** Asserts that two ints are equal. 断言两个int是相等的*/
static public void assertEquals(int expected, int actual) {assertEquals(null, expected, actual);
}

可以看到里面调用了assertEquals(String message, int expected, int actual)方法:

/*** Asserts that two ints are equal. If they are not* an AssertionFailedError is thrown with the given message.* 如果不抛出带有 message 的异常(AssertionFailedError)信息, 则表明两者相等*/
static public void assertEquals(String message, int expected, int actual) {assertEquals(message, Integer.valueOf(expected), Integer.valueOf(actual));
}

可以看到, 这里把int类型封箱成为Integer类型. 注释说, 会抛异常, 但这里没有. 没关系, 我们接着看里面调用: assertEquals(String message, Object expected, Object actual)方法:

/*** Asserts that two objects are equal. If they are not* an AssertionFailedError is thrown with the given message.* 如果不抛出带有 message 的异常(AssertionFailedError)信息, 则表明两者相等(这里比较的是Object对象)*/
static public void assertEquals(String message, Object expected, Object actual) {if (expected == null && actual == null) {return;}if (expected != null && expected.equals(actual)) {return;}failNotEquals(message, expected, actual);
}

两个if语句, 判断了两者相等的情况: 引用(地址)相等或者内容相等. 如果这两种if情况都不命中, 那么表明1参和2参实际是不相等, 所以代码会往下执行failNotEquals(String message, Object expected, Object actual)方法,并在此方法中抛出异常, 接下来就比较简单了:

static public void failNotEquals(String message, Object expected, Object actual) {fail(format(message, expected, actual));
}public static String format(String message, Object expected, Object actual) {String formatted = "";if (message != null && message.length() > 0) {formatted = message + " ";}return formatted + "expected:<" + expected + "> but was:<" + actual + ">";
}
/**
* Fails a test with the given message.
*/
static public void fail(String message) {if (message == null) {throw new AssertionFailedError();}throw new AssertionFailedError(message);
}

以上可以看出, 最终是由fail(String message)这个方法抛出异常信息!!

Assert.assertEquals()使用方法:
使用, 示例代码:

Assert.assertEquals(true, arry.contains("hello"));
Assert.assertEquals(39991L, aa.getLong("key3", 0L));
Assert.assertEquals(true, bb.getBoolean("key4", false));
Assert.assertEquals(5.3f, cc.getFloat("key5", 0.f));
Assert.assertEquals(99, dd.getInt("key6", 1));
Assert.assertEquals("如果打印本信息, 证明参数不相等", 10L, 10);

按照源码分析, 我们可以把一个预期结果作为1参传递进去. 2参传递我们需要测试的方法. 然后执行. 相等, 代码继续往下执行, 不相等, 中断执行, 抛出异常信息!!!

略作一提:
Assert.assertSame(Object expected, Object actual)方法:
查看源码, 其比较的是引用地址是否相等, 并没有对内容进行比较:

/*** Asserts that two objects refer to the same object. If they are not* the same an AssertionFailedError is thrown.*/
static public void assertSame(Object expected, Object actual) {assertSame(null, expected, actual);
}
/*** Asserts that two objects refer to the same object. If they are not* an AssertionFailedError is thrown with the given message.*/
static public void assertSame(String message, Object expected, Object actual) {if (expected == actual) {return;}failNotSame(message, expected, actual);
}

Assert.assertEquals作用相关推荐

  1. Assert.assertEquals

    作用:junit.framework包下的Assert提供了多个断言方法. 主用于比较测试传递进去的两个参数. Assert.assertEquals();及其重载方法: 1. 如果两者一致, 程序继 ...

  2. java junit Assert断言用法示例: Assert.assertEquals(期望的结果,运算的结果)

    计算demo /*** 计算器类*/ public class Calculator {/*** 加法* @param a* @param b* @return*/public int add (in ...

  3. python assert的作用

    一.python assert的作用: 根据Python 官方文档解释(https://docs.python.org/3/reference/simple_stmts.html#assert), & ...

  4. C++工作笔记-C++中assert的作用

    原文地址:https://blog.csdn.net/gogokongyin/article/details/51114952 assert()这个函数在C++中用的比较少,但是有以次面试被问及到了, ...

  5. 关于Assert.assertEquals报错的处理

    在熟悉hutool工具包时出现的关于Assert.assertEquals()的报错及其解决方法 前提(也是主要问题):用testCompile导入junit4.12 build.gradle文件 p ...

  6. 【Java】Assert.assertEquals断言

    Assert.assertEquals 1.概述 在开发中,我们需要测试时候,不可能把全部程序运行一次,在此我们就需要通过编写单元测试来对程序进行测试了.在 Assert 类里面有大量的静态方法,本篇 ...

  7. Assert.assertEquals()方法参数详解

    junit.framework包下的Assert提供了多个断言方法. 主用于比较测试传递进去的两个参数. Assert.assertEquals();及其重载方法: 1. 如果两者一致, 程序继续往下 ...

  8. Assert.assertEquals的使用方法和注意事项

    Assert.assertEquals的使用方法和使用注意 文章目录 Assert.assertEquals的使用方法和使用注意 前言 一.Assert运行环境需要什么导入什么jar包? 二.使用步骤 ...

  9. java之Assert.assertEquals详细分析

    目录 前言 1. 源码 2. 结合实例 3. 参数设置 前言 具体的参数设置中可以有 在此需要引入import org.junit.Assert; 提供多个断言方法 主要是比较两者参数的不同 如果相同 ...

最新文章

  1. 清空、重设input框
  2. Linux 中/etc/profile、~/.bash_profile 环境变量执行过程
  3. python网络编程100例_python网络编程
  4. android studio光标变成黑块,解决Android Studio 代码无提示无颜色区分问题
  5. Google搜索简单介绍
  6. Python 从入门到放弃(一)
  7. EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE
  8. 挖矿病毒audiodg.exe\taskhost.exe溯源与手动查杀方法
  9. Unity Shader 实现简单的压扁效果
  10. 批归一化《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
  11. android 环信客服修改自己的头像
  12. 英语发音规则---E字母(总结)-[复习中]
  13. 6.1-6.30推荐文章汇总
  14. 敏捷开发创始人_开发人员和技术创始人如何将他们的想法转化为UI设计
  15. 究竟线框图为什么要画,以及如何画
  16. 中国的程序员只能支撑到30岁么。
  17. 【无标题】不出门怎么连接公司电脑,这6个工具让你不用来回跑。
  18. 1119 Pre- and Post-order Traversals (PAT甲级)
  19. 在android上启动分屏的方法
  20. 抓娃娃营销工具 uniapp

热门文章

  1. springboot web 前端开发入门教程
  2. css 字间距离_css 字体字符间距设置
  3. 开源项目推荐:CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM(一)
  4. python随机数生成十个数字的成语_python小白也可以分分钟爬取微博数据,并生成有个性的词云,你get到了吗?...
  5. Python单元测试-Unittest(四)
  6. Python考试评级
  7. socketpair的用法和理解
  8. Ubuntu Linux更新的几种命令
  9. 24小时伦敦金走势图分析
  10. php的orm框架,PHP有什么ORM框架?