`

JUnit测试程序编写规范

阅读更多
一、 程序命名规范

1.测试类的命名

测试类的命名规则是:被测试类的类名+Test

比如有一个类叫IrgSrhDelegate,那么它的测试类的命名就是IrgSrhDelegateTest

2.测试用例的命名

测试用例的命名规则是:test+用例方法名称

比如要测试的方法叫updateData,那么测试用例的命名就是testUpdateData

(说明:“用例方法”就是指被测试的类中所包含的方法,而“测试用例”就是指测试类中所包含的方法)

比如IrgSrhDelegate中有一个方法叫做findByIrgFindParam,那么在IrgSrhDelegateTest中对应的测试用例名称就是testFindByIrgFindParam。

3.其它命名规范

本规范未说明的其它命名规范请参照《J***A语言编码规范》(ENO-W063-J***A Coding Rule.doc)。

二、 测试程序的包名定义规范

为了保持测试程序的独立和稳定性,请按照下面的方式组织测试程序:

假如被测试类的包名是com.wistrons.util,那么测试类的包名就是test.com.wistrons.util。也就是说在被测试类的包名前加上“test.”,这就是测试类的包名。

三、 测试数据的准备方案

准备测试数据时有三种方案可以选择。

1.在程序中直接写入测试数据

在要输入的数据项不多的情况下可以采用这种方式

2.使用junitpack包中的InputDataUtil工具类

(要使用这个工具,请在测试程序中加上import junitpack.InputDataUtil)

这种方法要求把测试数据写在一个XML文件中,XML的格式如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<inputs>

<input>

<IrgCd>h0001</IrgCd>

<IrgName></IrgName>

<IrgKname></IrgKname>

</input>

<input>



</input>



</inputs>

在这个XML文件中的根节点为inputs,根节点下可以有多个input节点。每个input节点代表一个case中需要的所有数据。

使用这个工具类的操作步骤如下:

1) 获取XML的存放路径。

请把写好的XML存放在测试类所在的目录中,然后可以按如下方式取得XML的存放路径:

String xml = IrgSrhDelegateTest.class.getResource(".").toString() +"test.xml";

2) 创建InputDataUtil的实例。

InputDataUtil inputUtil = new InputDataUtil();

3) 在InputDataUtil实例中设置接受数据的类名,InputDataUtil将此类与XML进行数据绑定。

inputUtil.setClassName("jp.co.liondor.common.fz25IrgSrh. SeekIrgSrhOpt");

4) 调用InputDataUtil.parse()方法,从XML中采集数据

java.util.Vector vector = (java.util.Vector) inputUtil.parse(xml);

5) 从Vector中取出被绑定类的实例

for (int i = 0; i < vector.size(); i++) {

SeekIrgSrhOpt opt = (SeekIrgSrhOpt) vector.get(i);



}

现在对InputDataUtil的工作原理进行说明。InputDataUtil会根据input节点下的子节点名来设置被绑定的类中对应的set方法,然后把XML中的数据设置到被绑定类中。比如上例XML中,input节点下有三个子节点:IrgCd、IrgName、IrgKname。那么在调用InputDataUtil.parse()方法时,InputDataUtil就会分别调用SeekIrgSrhOpt类的setIrgCd()、setIrgName()、setIrgKname()方法,把数据设置到SeekIrgSrhOpt的实例类中,并返回包含这些实例类的Vector对象。

3.使用Digester

(要使用这个工具,请在测试程序中加上import org.apache.commons.digester.Digester)
Digester是Apache提供的一个工具类,上面的InputDataUtil也是从Digester类继承的。当使用InputDataUtil暂时无法解决的时候,可以直接使用Digester。

使用Digester的步骤如下:

1) 获取XML的存放路径。

获取方式与使用InputDataUtil相同。

2) 创建Digester的实例。

Digester dig = new Digester();

3) 设定与inputs节点绑定的类为Vector

dig.addObjectCreate("inputs", "java.util.Vector");

4) 设定与input节点绑定的类

dig.addObjectCreate("inputs/input",
" jp.co.liondor.common.fz25IrgSrh. SeekIrgSrhOpt ");

5) 根据input节点下的子节点,依次设定相应的set方法

dig.addCallMethod("inputs/input/ IrgCd ", "setIrgCd ", 1);
dig.addCallParam("inputs/input/ IrgCd ", 0);

6) 设定向Vector中加入数据的方法

dig.addSetNext("inputs/input", "add");

7) 调用Digester.parse()方法,从XML中采集数据

java.util.Vector vector = (java.util.Vector) dig.parse(xml);

8) 从Vector中取出被绑定类的实例

for (int i = 0; i < vector.size(); i++) {
SeekIrgSrhOpt opt = (SeekIrgSrhOpt) vector.get(i);

}

Digester的用法非常灵活,可以组织非常复杂的数据.
关于Digester的详细用法请参考http://jakarta.apache.org/commons/digester/。

四、 对UI测试的原则

对UI做单元测试必须做到不能牵涉到业务逻辑操作(比如数据库操作、与Server的交互)。否则就是UI的设计不合理。对UI的单元测试应该非常单纯,就只是测试界面的动作是否符合设计要求。

五、 测试数据的覆盖率

测试时所准备的测试数据要覆盖程序中所有可能出现的CASE。

六、 测试记录

记录测试的过程和结果,请使用Log4j工具。

七、 测试粒度

选择测试粒度的原则:

1) 被测试类中所有public、protected方法都要测到。
2) 对于简单的set和get方法没有必要做测试。


文章引用自:http://www.blog.edu.cn/user1/5897/archives/2006/1101321.shtml

分享到:
评论

相关推荐

    Junit 测试简单代码

    一个简单的JUnit测试类通常会继承自`junit.framework.TestCase`(JUnit 4及之前版本)或者使用`@RunWith(JUnitPlatform.class)`注解(JUnit 5及以上版本)。下面是一个基于JUnit 4的简单示例: ```java import org....

    android studio junit测试 demo

    总的来说,Android Studio中的JUnit测试对于确保应用程序的可靠性和可维护性至关重要。通过熟练掌握JUnit测试,开发者可以提高代码质量,减少bug,并在开发过程中节省大量时间。记住,每个测试都应该独立且可重复,...

    junit测试.zip

    这个“junit测试.zip”文件包含了JUnit库的jar包,它用于帮助进行程序的单元测试。单元测试是对软件中的最小可测试单元进行检查和验证,通常是一个方法或一个类。 在Java开发中,单元测试是质量保证的关键步骤,...

    junit测试

    1. **测试类(Test Class)**:一个包含JUnit测试用例的Java类。通常,测试类会与被测试的类处于同一个包中,以避免访问权限问题。 2. **测试方法(Test Method)**:在测试类中,带有`@Test`注解的方法即为测试...

    软件测试实验-JUnit单元测试.pdf

    编写JUnit测试用例需要新建测试类源代码的文件夹,目标类与测试类位于同一个包下面,测试类的命名规则等。 6. JUnit的应用是什么?JUnit的应用是用于测试驱动开发(TDD),它可以提高软件测试的效率和质量,并提高...

    junit4.12测试包下载

    其次,`junit-4.12.jar`是JUnit库的核心运行时文件,包含了实现JUnit测试框架的所有类和方法。这个文件在编译和运行测试时是必需的,通常会添加到项目的类路径中。通过它可以创建和运行测试类,利用JUnit提供的断言...

    免费的Junit的单元测试jar包

    在这个场景中,我们讨论的是一个免费的Junit单元测试jar包,该包可用于进行Java程序的单元测试。 首先,让我们深入了解一下Junit。Junit是由Ernst Meyer和Kent Beck发起的一个开源项目,它是一个基于Java的测试框架...

    Eclipse中建立自己的JUnit测试Java教程.doc

    本文对 Eclipse 中建立自己的 JUnit 测试进行了详细的介绍,包括 JUnit 的基本概念、测试类型、测试命名规则、在 Eclipse 中使用 JUnit 创建测试等。通过本文,读者可以了解如何使用 JUnit 在 Eclipse 中进行测试,...

    使用junit测试ssh中的dao

    标题“使用junit测试ssh中的dao”涉及到的是Java开发中的单元测试技术,特别是针对SSH(Struts2、Spring、Hibernate)框架中的数据访问对象(DAO)进行测试。SSH是Java Web开发中常用的三大开源框架,它们协同工作以...

    Junit白盒测试学习文档

    白盒测试,又称结构测试或逻辑驱动测试,是一种根据程序内部逻辑结构和代码来设计测试用例的方法。在软件开发中,JUnit作为Java语言中最常用的单元测试框架,被广泛应用在各个阶段的测试工作中,以确保代码的质量和...

    软件测试与junit实践Java测试

    9. **持续集成**:将JUnit测试集成到持续集成服务器如Jenkins或Travis CI中,可以自动运行测试并及时反馈测试结果。 10. **TDD(测试驱动开发)**:JUnit也支持采用TDD(Test-Driven Development)模式,即先写测试...

    2022年Eclipse中建立自己的JUnit测试Java教程.docx

    "2022年Eclipse中建立自己的JUnit测试Java教程" 本文将向读者介绍 JUnit 测试框架在 Eclipse 中的应用,并指导读者如何在 Eclipse 中建立自己的 JUnit 测试。同时,本文还将向读者介绍测试驱动开发(TDD)的概念和...

    软件测试 Junit教程

    - **实验1JUnit单元测试基础.doc:** 这个文档可能详细介绍了如何编写第一个JUnit测试用例,包括基本的断言和测试方法的构造。 - **Junit源代码学习.pdf:** 这份PDF可能包含了对JUnit框架内部实现的深入分析,帮助...

    JBoss encore 工程和 JUnit测试自动生成工具2

    通过JBoss encore的测试自动生成工具,开发者可以快速创建JUnit测试类,减少了手动编写测试代码的工作量,提高了测试覆盖率。 此外,seam和weld是两个与encore密切相关的技术。Seam是一个全面的Java EE框架,它整合...

    Junit4测试总结

    JUnit4允许自定义规则(Rules),通过`@Rule`注解,可以创建复杂的测试逻辑,例如日志记录、资源管理等。此外,JUnit4还支持使用`Runner`自定义测试执行流程。 ### 七、实战应用 在实际开发中,单元测试是保证代码...

    junit4.7单元测试

    JUnit 4.7 是一个流行的开源测试框架,主要用于编写和执行Java程序的单元测试。它在软件开发过程中扮演着至关重要的角色,确保代码的质量和稳定性。这个版本的JUnit是在JUnit 4系列的一个更新,带来了许多改进和新...

    junit单元测试文档

    JUnit Vintage用于支持旧版本的JUnit测试运行。其TestEngine允许在JUnit 5平台上运行基于JUnit 3和JUnit 4的测试。这对于迁移旧代码库和维护向后兼容性非常重要。 JUnit 5要求运行时的Java版本为Java 8或更高。尽管...

    Junit单元测试

    ### Junit单元测试知识点 ...JUnit作为一种流行的Java单元测试框架,为开发者提供了强大的工具来编写和执行测试。此外,重构与单元测试相结合,能够进一步提升代码的质量和可维护性,为项目的长期发展奠定坚实的基础。

    junit教程,ppt,白盒黑盒测试方案等帮助文档打包下载

    JUnit是一款广泛应用于Java编程语言的单元测试框架,它使得开发者能够方便地编写和执行自动化测试用例,以确保代码的质量和功能的正确性。在Java开发过程中,JUnit是不可或缺的工具,因为它可以帮助找出代码中的错误...

Global site tag (gtag.js) - Google Analytics