`
jiangduxi
  • 浏览: 453219 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Junit(Let collections compare themselves)

阅读更多
问题:
    你想验证容器的内容,而你第一个想到的办法是逐个检验期望的项,是否有更简单的方法呢?

背景:
    如果你是一个JUnit新手,那么可能你也是一个Java新手。那么可能你不熟悉如何让对象自己进行相互比较,以至于你觉得逐个比较容器的条目是唯一的选择。其实我们更简单的办法。

诀窍:
   首先使用你期望的内容创建一个列表,你可以使用你期望的顺序,接着使用assertEquals()方法将其与你获取的容器(最常见的是通过一个方法)进行比较,最后就让相应的equals()方法来验证容器是否相等。

各种类型的容器的Equals方法的行为
容器的种类Equals()方法的行为
List如果两个list对象的元素全部相同,并且索引全部对应,就认为它们“相等”,而不论比较的对象是否是list接口的不同实现。比如如果一个ArrayList对象和一个LinkedList对象满足这些条件,那么就认为它们“相等”
Set如果两个set对象包含完全相同的元素,就认为它们“相等”,不论它们是否是Set接口的不同实现。比如,如果一个HashSet对象和一个LinkedList对象包含相同的元素,那么就认为它们是相等的。
Map如果两个map对象包含完全相同的关键字,并且每个关键字都映射相同的元素,就认为它们“相等”,不论它们是否是Map接口的不同实现。比如,如果一个对象HashMap对象和一个TreeMap对象满足这些条件,那么就认定它们是相等的。
Collection如果两个容器对象属性同一种类型(List,Set,Map),并且满足相应的类型的相等条件,才认为它们“相等”。即使一个List对象和一个Set对象包含完全相等的元素,也不认为他们是相等的。

只要你比较的容器“属于同一种类型”,比较它们就很简单。

讨论:
  如果你有两个容器对象都是List类型,但你想在不考虑它们的元素顺序的前提下进行比较,那么你有几个选择,这取决于List对象的特征。如果你知道List对象没有重复项,那么可以简单地将List对象转换为Set对象再进行比较。这只需要使用assertEquals(new HashSet(expectedList), new HashSet(actualList))方法,就能够实现。

然而,如果你要比较的List对象含有重复项,你就需要首先获取每个重复项的重复次数,并确认它们是否相同。你可以创建自定义的断言方法,如果两个容器对象含有每个元素的相同数量的拷贝,那么即使它们的顺序不同,也认为它们是相等的。
分享到:
评论

相关推荐

    junit5.rar包含JUnit Platform + JUnit Jupiter + JUnit Vintage依赖jar包

    JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-platform-launcher-1.5.1.jar,junit-...

    junit4.1 junit4.1

    junit4.1junit4.1junit4.1junit4.1junit4.1

    JUnit API JUnit API

    JUnit API JUnit API JUnit API JUnit API JUnit API

    junit的jar包

    Files contained in junit4-4.8.2.jar: LICENSE.txt META-INF/MANIFEST.MF junit.extensions.ActiveTestSuite.class junit.extensions.RepeatedTest.class junit.extensions.TestDecorator.class junit.extensions...

    JUNIT介绍JUNIT介绍

    JUNIT 是一个专门为Java开发者设计的单元测试框架,它的主要目标是简化和自动化代码的单元测试,确保每个独立的代码模块都能正常工作。作为一个开源项目,JUNIT 不仅免费,而且具有高度的可扩展性和易用性,允许开发...

    junit5.jar

    这个名为"junit5.jar"的文件正是JUnit 5的核心库,它包含了执行单元测试所需的所有核心组件,包括JUnit Platform、JUnit Jupiter和JUnit Vintage。本文将全面解析JUnit 5的关键特性和使用方法。 首先,JUnit ...

    JUnit in Action 3nd Edition

    "JUnit in Action 3rd Edition" JUnit是一种流行的Java单元测试框架,由Kent Beck和Eric Gamma于1997年创立。JUnit在软件测试领域中扮演着重要的角色,帮助开发者编写高质量的代码。下面是关于JUnit的重要知识点: ...

    Junit5依赖整合包

    Junit5是Java开发中最常用的单元测试框架之一,它的出现为开发者提供了更加高效、灵活的测试体验。相较于之前的版本,Junit5引入了许多新的特性和改进,使得测试代码的编写和维护变得更加简单。本整合包包含了Junit5...

    Junit5.7.2离线jar

    JUnit是Java编程语言中最常用的单元测试框架之一,用于编写和运行可重复的自动化测试用例。Junit5.7.2版本是这个框架的一个稳定版本,提供了许多改进和新特性,使得测试更加高效且易于维护。这个离线jar文件包含了...

    Junit5.zip

    JUnit5是Java编程语言中最流行的单元测试框架之一,它的最新版本带来了许多改进和新特性,使得测试更加高效和灵活。本资源包含的`junit5.jar`是JUnit5的运行库,可以用于运行使用JUnit5编写的测试用例。而`junit5-...

    JUnit in action JUnit Recipies

    《JUnit in Action》和《JUnit Recipes》是两本关于Java单元测试的重要书籍,它们深入浅出地介绍了如何使用JUnit框架进行高效、可靠的测试。JUnit是一个流行的开源测试框架,广泛用于Java应用程序的单元测试,它提供...

    junit测试_java_JUnit_JUnit测试_

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。单元测试是对程序中的最小可测试部分——通常是一个函数或方法——进行检查,确保其按照预期工作。JUnit作为...

    Junit4.4 Junit3.8.1

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这里我们关注的是JUnit的两个不同版本:JUnit 4.4和JUnit 3.8.1。这两个版本在功能、设计和使用上都有所差异,...

    junit工具jar包

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这个“junit工具jar包”是JUnit 4.8.1版本,一个稳定且广泛使用的版本,提供了丰富的断言方法和测试注解,便于...

    JUnit学习资料JUnit学习资料

    ### JUnit学习资料知识点解析 #### 一、JUnit概述 **JUnit** 是一款开源的Java测试框架,专门用于编写和运行可重复利用的自动化测试。它最初由Ernst & Young公司的Kent Beck和Erich Gamma开发,自1998年以来一直是...

    junit4 jar包

    JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了编写可重复执行、易于维护的测试代码的能力。这个“junit4 jar包”包含了运行JUnit4测试所必需的库文件,主要包括两个核心组件:`junit-4.11....

    JUnit讲课文档JUnit讲课文档

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可重复运行的测试用例,以确保代码的正确性和稳定性。这篇文档将深入讲解JUnit的核心机制和使用方法。 JUnit的内部机制首先从测试注解开始,如@...

    Junit5.jar包,代码测试工具

    JUnit5是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了强大的测试能力,确保代码的质量和稳定性。本篇文章将详细介绍JUnit5的核心组件、主要功能以及如何在项目中使用。 JUnit5由三个主要模块组成...

    Junit4.12和依赖包

    JUnit是Java编程语言中最常用的单元测试框架之一,它极大地简化了对代码进行验证和调试的过程。Junit4.12是该框架的一个稳定版本,它包含了许多改进和新特性,使得测试更加灵活和强大。在本文中,我们将深入探讨...

    junit-4.11-API文档-中文版.zip

    赠送jar包:junit-4.11.jar; 赠送原API文档:junit-4.11-javadoc.jar; 赠送源代码:junit-4.11-sources.jar; 赠送Maven依赖信息文件:junit-4.11.pom; 包含翻译后的API文档:junit-4.11-javadoc-API文档-中文...

Global site tag (gtag.js) - Google Analytics