在软件测试中,最基本的测试莫过于单元测试。单元测试在使用Eclipse开发过程中莫过于使用JUnit进行单元测试。既然是要写程序,那么就必须对程序进行质量保证。自己写程序,那么自己也写单元测试来验证你写的程序。这种反复辩证是一种很好的习惯,也是一种很好的思维。废话就不多说了。
最简单的测试莫过于验证一个方法的返回值,这种测试是所有程序测试的基础。其实可能单元测试复杂的地方在于将一个复杂的测试问题进行拆分,并最终分解成一个简单的测试。就像将一个物质分解到原子还是要继续分解下去呢?这里就是一个考虑的地方。同时也是一个边界的划分问题。但是记住一个原则,就是将其分解到一个不能在分解的原子。如果你知道怎么分解数学的分解子因数,那就照那样去分解吧。如果你按照这样的想法去分解那么单元测试就会简单了。记住遇到要进行单元测试的程序。请你按照分解子因数去分解吧。
下面看一个超级简单的单元测试。
//该测试方法用于测试List是否为空
public void testNewListIsEmpty(){
List list=new ArrayList();
assertEquals(0,list.size());
}
这里这个assertEquals()方法就是用来进行测试比较。
assertEquals()方法既允许你比较基本类型的值,也允许你比较对象。
不要忘了基本类型,为了复习我也给出基本类型包括:int、float、boolean、double、long、char、byte。如果有兴趣可以打开JUnit的junit.framework类,验证那些"assert"方法是如何实现的。framework将基本类型当做数值来比较(而不是对象),所以只要value是一个值为"3"的基本数据类型,assertEquals(3,value)就能看见绿条。那就是成功了。如果你希望测试的方法返回一个对象而不是一个基本数据类型,你就需要做更多的工作来验证实际返回值和期望值是否一致。
如果方法的返回值是对象,那么有两种技巧可以用来验证期望值与该方法的返回值是否相等。
第一种技巧是,将该方法的返回值是所有可读的属性值拿出来,依次与你的期望值的相应属性值进行比较。
第二种技巧是,创建一个代表期望值的对象,然后使用一行代码将它与实际返回值进行比较。
不过最好使用第二种方法。
例如:
public void testSynchronizedListHasSameContents(){
List list=new ArrayList();
list.add("Jake");
list.add("dave");
list.add("Cache");
List synchronizedList=Collections.synchronizedList(list);
assertEquals("Jake",synchronizedList.get(0));
assertEquals("dave",synchronizedList.get(1));
assertEquals("Cache",synchronizedList.get(2));
}
上例中我们测试Collections.synchronizedList()方法,这个方法被认为可以为列表(List)添加一个线程安全的新特征,而不影响列表的内容。通过测试来验证该方法是否真的做到了这一个点。synchronizedList()方法非常简单,因为它直接返回了一个对象,可以让我们检查其正确性。我们将对象的每一个元素都视为可读的属性值,并将它们逐个与原来列表中的元素进行比较。这其实使用的是第一种方法。它工作的很好,但是有缺陷,最显著的缺点是:它涉及到了太多的代码输入---尤其是对这么简单的测试。也许你会想怎么不用循环,真笨。下面我们看看循环吧!
public void testSynchronizedListHasSameContents(){
List list=new ArrayList();
list.add("Jake");
list.add("dave");
list.add("Cache");
List synchronizedList=Collections.synchronizedList(list);
for(int i=0;i<list.size();i++)
{
assertEquals(list.get(i),synchronizedList.get(i));
}
}
也许你会觉得自己真是天才,使用一个循环把代码行数减少。
不过我告诉你其实还有更好的方法如下:
public void testSynchronizedListHasSameContents(){
List list=new ArrayList();
list.add("Jake");
list.add("dave");
list.add("Cache");
List synchronizedList=Collections.synchronizedList(list);
assertEquals(list,synchronizedList);
}
你会想怎么可以这样。你是否记得Java本身就有这样一个方法:Object.equals()。
List.equals()方法要求:当且仅当两个列表的相同索引指向的元素相同的时候,两个列别才算"相等"。那么就将判断相等性的责任让List类来做吧!因为他们自己已经配备了做这种事情的最好方法。
如果你要写最简单的测试代码,请参考下列步骤:
1. 创建一个对象并且初始化。
2. 调用一个方法,它返回实际的结果(actualresult)
3. 创建一个"预期结果",该结果可以是基本类型也可以是对象
4. 调用assertEquals(expectedResult,actualResult)方法进行比较。
你试试吧!
分享到:
相关推荐
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进行白盒测试的学习资料,主要面向编程人员和软件质量保证工程师。白盒测试,又称结构测试或逻辑驱动测试,是一种根据程序内部逻辑结构和代码来设计测试用例的...
关于"浪曦JUNIT4笔记"可能涉及的内容,浪曦可能对JUnit4的使用提供了详细的教程或者最佳实践,包括但不限于如何组织测试类,如何使用Mockito进行模拟对象测试,以及如何利用TestNG或Spock等其他测试框架与JUnit4结合...
"Junit良葛格学习笔记"很可能包含了一系列关于如何有效利用JUnit进行测试的教程和示例。下面将详细阐述JUnit的核心概念、功能以及在实际开发中的应用。 1. **JUnit简介**: JUnit是由Ernst Leiss和Kent Beck开发的...
12. **JUnit与持续集成**:如何将JUnit测试结果集成到持续集成工具如Jenkins、Travis CI等,以实现自动化测试。 13. **学习笔记**:个人的学习笔记可能包含了作者在实践过程中遇到的问题、解决方案和经验总结,对于...
这篇“接口测试学习笔记一”可能是从张恒912在iteye博客上分享的一篇文章转化而来的,虽然没有直接提供具体内容,但我们可以根据标签“源码”和“工具”来推测笔记可能涵盖的范围。 首先,接口测试涉及到的源码层面...
接下来,我们来创建一个简单的JUnit测试类。在NetBeans中,右键点击你的项目,选择“新建”->“JUnit测试类”。输入测试类的名字,比如“MyTestClass”,NetBeans会自动生成一个包含默认测试方法的测试类模板。这个...
并提及了用Ant,maven和Eclipse来自动化Junit测试。 第二部分:测试策略 第6章:描述了如何用stub来执行单元测试。这一章介绍了一个连接到web服务器的示例应用,并描述了如何应用 Stub方法对远程URL的方法执行...
在“北京圣思园 junit 全套笔记及源码”中,你将深入学习 JUnit 的各种功能和最佳实践。以下是一些关键知识点: 1. **安装与配置**:首先,你需要了解如何在你的开发环境中安装 JUnit,通常是通过 Maven 或 Gradle ...
软件测试学习笔记001 software testing是软件生命周期中的一种质量保证活动,旨在评估软件产品是否满足要求和预期结果。software testing是软件开发过程中的一个重要步骤,可以帮助开发团队发现和修复软件中的错误...
JUnit知识点滴集合笔记,这个包里面包括了好几篇文档,一定会让你对JUNIT有一个全新的认识。 JUnit 4 抢先看.doc JUnit in java 真正的测试用例实战.doc JUnit起步.doc junit实现过程.doc JUnit中如何测试异常.doc ...
`junitreport`是一个用于处理JUnit测试结果的XML格式报告的工具。它可以将测试结果转换成HTML格式,方便查看和分析。在Android项目中,我们可以通过配置`AndroidManifest.xml`文件,使测试过程中生成的JUnit XML报告...
JUnit是Java编程语言中最常用的单元测试框架之一,用于编写和执行可重复的自动化测试。这篇入门笔记将带你深入了解JUnit的基本概念、使用方法以及其在实际开发中的应用。 **一、JUnit简介** JUnit是一个开源的、...
总之,这个学习资源将带你深入理解JUnit的基本概念和高级特性,通过阅读`JUnit学习笔记.txt`并动手实践其中的示例,你将能熟练掌握如何利用JUnit3和JUnit4进行有效的单元测试,从而提升代码质量和项目稳定性。
从提供的信息来看,这份学习笔记详尽地介绍了软件测试的基础知识,包括各种开发过程模型、测试方法、测试用例设计、单元测试、集成测试、功能测试以及性能测试。 首先,让我们探讨软件开发过程模型。线性顺序模型,...