现在看看JUnit怎么测试equals()方法
首先分析下equals()方法:
一般来说,equals()方法不怎么会使用去比较那些面向行为或面向处理过程的类,但你需要去比较那些面向数值对象的类,因为那些面向处理过程的类会使用面向数值对象的类作为输入和输出。为了将这些数值对象存储到容器(List,Set,Map等)中,你需要恰当地实现其euqals()和hashCode()方法,当你对数值对象进行测试的时候,这就显得尤其重要,因为你将会花费大量的时间来判断两个数值对象或者两个基本数据类型是否相等。
注意:
一个数值对象代表一个值,比如Integer,Money对象或者Timestamp对象。
数值对象与其他的对象的不同在于:如果你有二十个不同的对象代表同一个值,那么这些对象就是可相互替代的。你是否使用内存中的同一对象并不重要;如果你在内存中有三个代表5的数值对象,那么你使用一个来代替另一个不会影响程序的功能。换句话说,即使是内存中的不同对象,我的20和你的20也不会有什么不同。不过你需要通过恰当 的实现equals()方法来反映这一点。
基本类型(包括整型,浮点型等)的封装类具有数值对象的特性,String也是这样。
如果你的对象不是数值对象,那么就无须去测试它们的相等性,当然也不需要重载equals()方法。这个原则对大多数情况都适应。
注意:
equals()方法的快速回顾----- equals()方法的要求并不复杂,但对于那些在数学课上没有认真学习相等性的程序员来说,可能也不太容易,所有我们在这里简单回顾下。equals()方法必须具备三个著名的属性:即反身性(reflexive)、对称性(symmetric)和传递性(transitive).
反身性: 的意思是一个对象等于其自身。
对称性: 如果我等于你,那么你也等于我
传递性: 如果我等于你,你等于他,那么我也就等于他。
除了这些数学特性,equals()方法还必须是一致的:也就是说,不论你调用了多少次,只要比较的对象不变,equals()方法的结果就必须是一致的。最后一个定理是,任何一个对象都不等于"null"
现在我们借助Mike Bowler的GSBase开源包(http://gsbase.sourceforget.net)
这个包中提供了很多JUnit测试工具。其他就包含一个相等性测试器(EqualsTester).这个测试器能在数值对象上运行一整套的测试,以确定该对象的equals()方法是否具备所有必要的属性。
package junit.cookbook.common.test;
import junit.cookbook.util.Money;
import junit.framework.TestCase;
import com.gargoylesoftware.base.testing.EuqalsTester;
public class MoneyTest extends TestCase{
public void testEquals(){
Money a = new Money ( 100 , 0);
Money b = new Money ( 100 , 0);
Money c = new Money ( 50 , 0);
Object d = null;
new EqualsTester( a , b , c , d);
}
}
解释:
a 是一个基准对象, 其他三个对象都要与它进行比较
b 是内存中另一个对象,它与a的值相等。
c 是不等于a的一个对象
分享到:
相关推荐
JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可重复运行的测试...这份文档对于学习和掌握JUnit测试框架具有很高的参考价值。通过深入学习,开发者可以提高代码质量,确保软件的可靠性和稳定性。
《Junit 4.0 学习笔记》 JUnit 是一个广泛使用的Java编程语言的单元测试框架,尤其在敏捷开发和持续集成环境中扮演着至关重要的角色。本文将深入探讨JUnit 4.0版本的主要特性、核心概念以及如何有效利用它进行单元...
法在每个测试方法执行之后都要执行一次,相当于 JUnit3 中的 tearDown 方法,用于清理测试环境。@Test:这是 JUnit4 中的核心元数据,用于标记测试方法。当 JUnit4 运行测试时,会查找所有带有 @Test 注解的方法,并...
通过这份Junit学习笔记,你可以掌握单元测试的基本思想,熟练运用JUnit进行代码质量的保障。在实际开发中,单元测试不仅能帮助找出错误,还能在重构时提供安全保障,提高代码质量。不断学习和实践,你会发现自己在...
### JUnit4学习笔记——入门篇 #### 一、配置MyEclipse在项目中引入JUnit4.jar包 在使用JUnit4进行单元测试之前,首先需要确保开发环境已正确配置JUnit库。对于使用MyEclipse IDE的开发者来说,可以通过以下步骤...
《Junit白盒测试学习文档》是一份详细阐述如何使用JUnit进行白盒测试的学习资料,主要面向编程人员和软件质量保证工程师。白盒测试,又称结构测试或逻辑驱动测试,是一种根据程序内部逻辑结构和代码来设计测试用例的...
"Junit良葛格学习笔记"很可能包含了一系列关于如何有效利用JUnit进行测试的教程和示例。下面将详细阐述JUnit的核心概念、功能以及在实际开发中的应用。 1. **JUnit简介**: JUnit是由Ernst Leiss和Kent Beck开发的...
关于"浪曦JUNIT4笔记"可能涉及的内容,浪曦可能对JUnit4的使用提供了详细的教程或者最佳实践,包括但不限于如何组织测试类,如何使用Mockito进行模拟对象测试,以及如何利用TestNG或Spock等其他测试框架与JUnit4结合...
12. **JUnit与持续集成**:如何将JUnit测试结果集成到持续集成工具如Jenkins、Travis CI等,以实现自动化测试。 13. **学习笔记**:个人的学习笔记可能包含了作者在实践过程中遇到的问题、解决方案和经验总结,对于...
接下来,我们来创建一个简单的JUnit测试类。在NetBeans中,右键点击你的项目,选择“新建”->“JUnit测试类”。输入测试类的名字,比如“MyTestClass”,NetBeans会自动生成一个包含默认测试方法的测试类模板。这个...
这篇“接口测试学习笔记一”可能是从张恒912在iteye博客上分享的一篇文章转化而来的,虽然没有直接提供具体内容,但我们可以根据标签“源码”和“工具”来推测笔记可能涵盖的范围。 首先,接口测试涉及到的源码层面...
并提及了用Ant,maven和Eclipse来自动化Junit测试。 第二部分:测试策略 第6章:描述了如何用stub来执行单元测试。这一章介绍了一个连接到web服务器的示例应用,并描述了如何应用 Stub方法对远程URL的方法执行...
2. **创建测试类和测试方法**:JUnit 测试类通常以 "Test" 结尾,其中包含若干个测试方法。测试方法以 "test" 开头,并使用 @Test 注解标记。每个测试方法应专注于测试一个特定的功能或边界条件。 3. **断言...
软件测试学习笔记001 software testing是软件生命周期中的一种质量保证活动,旨在评估软件产品是否满足要求和预期结果。software testing是软件开发过程中的一个重要步骤,可以帮助开发团队发现和修复软件中的错误...
JUnit知识点滴集合笔记,这个包里面包括了好几篇文档,一定会让你对JUNIT有一个全新的认识。 JUnit 4 抢先看.doc ...XP 单元测试工具Junit 源代码学习.doc 如果你觉得好的话,给个好评,谢谢大家!
`junitreport`是一个用于处理JUnit测试结果的XML格式报告的工具。它可以将测试结果转换成HTML格式,方便查看和分析。在Android项目中,我们可以通过配置`AndroidManifest.xml`文件,使测试过程中生成的JUnit XML报告...
通过学习和实践这些基本知识,你将能够熟练运用JUnit进行单元测试,提升代码质量和开发效率。在阅读提供的"笔记_JUnit.docx"文档时,你会找到更详细的信息,包括具体示例和进阶话题,帮助你深入理解JUnit的使用。
总之,这个学习资源将带你深入理解JUnit的基本概念和高级特性,通过阅读`JUnit学习笔记.txt`并动手实践其中的示例,你将能熟练掌握如何利用JUnit3和JUnit4进行有效的单元测试,从而提升代码质量和项目稳定性。
### Selenium+Eclipse+JUnit+TestNG自动化测试学习笔记 #### 一、环境搭建与配置 **1. 安装 JDK** - **版本**: JDK 1.7 - **下载地址**: ...