Assert.assertEquals()方法参数详解

 更新时间:2021年12月18日 10:43:10   作者:俊墨客  
本文详细讲解了Assert.assertEquals()方法参数,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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()方法参数详解的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android学习笔记——Menu介绍(二)

    Android学习笔记——Menu介绍(二)

    这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu)
    2014-10-10
  • Android获取其他应用中的assets资源

    Android获取其他应用中的assets资源

    今天小编就为大家分享一篇关于Android获取其他应用中的assets资源,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Android Room数据库加密详解

    Android Room数据库加密详解

    这篇文章主要为大家详细介绍了Android Room数据库加密,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Android 8.0安装apk的实例代码

    Android 8.0安装apk的实例代码

    本文给大家分享了Android 8.0安装apk的实例代码,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-03-03
  • Android使用Jni实现压力锅数据检测效果示例

    Android使用Jni实现压力锅数据检测效果示例

    这篇文章主要介绍了Android使用Jni实现压力锅数据检测效果,涉及Android结合Jni实现进度条模拟压力锅数据监测效果的相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • Android中RecyclerView嵌套滑动冲突解决的代码片段

    Android中RecyclerView嵌套滑动冲突解决的代码片段

    这篇文章主要为大家详细介绍了Android中RecyclerView嵌套滑动冲突解决的代码片段,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 详解Android通过修改配置文件设置wifi密码

    详解Android通过修改配置文件设置wifi密码

    这篇文章主要介绍了详解Android通过修改配置文件设置wifi密码的相关资料,需要的朋友可以参考下
    2017-07-07
  • Android 线程优化知识点学习

    Android 线程优化知识点学习

    这篇文章主要为大家介绍了Android线程优化知识点学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Kotlin中的一些技巧与迂回操作分享

    Kotlin中的一些技巧与迂回操作分享

    这篇文章主要给大家介绍了关于Kotlin中的一些技巧与迂回操作的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用kotlin具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Android CameraManager类详解

    Android CameraManager类详解

    这篇文章主要为大家详细介绍了Android CameraManager类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10

最新评论