JUNIT

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ANT与自动构建测试
ANT介绍 ANT ANT构建文件(Build.xml)示例 Build.xml 在Build文件中包含JUNIT任务 WSAD中执行ANT构建
ANT介绍
“不带 make 缺点的 make”。 Ant 正在成为开放源代码世界中实际上的标 准。 Ant 是使用 Java 语言编写的,可以让构建过 程在多种平台上使用。
WSAD中执行ANT构建
选择:窗口-》首选项;在弹出的窗口左边的树状结构中依次点击 外部工具/ant。 然后在右面点中“类路径”标签,按“添加jar”按钮依次加入如下文 件:
../WebSphere Studio/Eclipse/plugins/org.apache.ant_1.4.1/ant.jar ../WebSphere Studio/Eclipse/plugins/org.apache.ant_1.4.1/jakarta-ant1.4.1-optional.jar ../WebSphere Studio/Eclipse/plugins/org.junit_3.7.0/junit.jar ../WebSphere Studio/runtime/base_v5/lib/xalan.jar ../WebSphere Studio/runtime/base_v5/lib/j2ee.jar
经过在每一个Java 包中建立一个TestSuite,在各种包 的层次中,可以在每一个抽象层中执行一个TestSuite。 例如,可以定义一个com.mydotcom.AllTests 执行系 统中所有的测试,及定义一个 com.mydotcom.ecommerce.EcommerceTestSuite 只执行 电子交易组件的测试。 测试的分层结构可以扩充到任意的深度。其深度与开 发系统的抽象层次有关。
第三步:测试的执行
JUnit 提供文本及图形两种用户界面。两种用户界面都可以 指出多少个测试被执行、任何错误或失败、及一个简单的完 成状态。 文本用户界面(junit.textui.TestRunner)如果通过所有测试则 显示『OK』而如果失败则显示失败信息。 图形用户界面(junit.swingui.TestRunner)显示浮动窗口,如 果通过所有测试则其中的一个进度条显示为绿色,否则进度 条显示为红色。
Junit中的命令模式
命令模式解决了测试概念对象化的问题。 对于开发人员头脑中存在的测试用例,以对象的形式呈现出 来。这些测试用例以往通常是以打印语句、调试表达式、测 试脚本的形式表现出来。 命令模式中,请求者不是直接调用命令执行者,而是通过一 个命令对象去调用执行者,具体说,先为命令请求生成一个 命令对象,然后动态地在这个命令对象中设置命令执行者, 最后用命令对象的execute 方法调用命令执行者。
第二步:编写一个TestSuite
1.定义一个测试类,该类继承自TestCase 。 2. 定义一个静态的suite()工厂方法;这个方法构建一个 TestSuite 以包含所有的TestCase、TestSuite。 3. 定义一个main()方法以批处理方式执行这个TestSuite中所 有的TestXXX方法。
Junit FrameWork介绍
Junit设计思路 命令模式 模板模式 收集参数模式 适配器模式 Pluggable Selector 模式 Composite 模式
Junit设计思路
JUnit 的设计思路源于"用模式生成架构 (PatternsGenerateArchitectures)"一文。它的思 想就是,从0 开始设计一个系统,一个一个地应用 模式,直到最后构造出这个系统的架构,这样就完 成一个系统的设计。
public abstract class TestCase implements Test { private final String fName; public TestCase(String name) { fName= name; } public abstract void run(); … }
利用可选任务Junit来运行测试
对于生成的测试结果,可以使Baidu Nhomakorabea可选任务 JunitReport来生成某种格式的结果文件进行察看。
利用内置任务:Java
<target name="runtests" depends="compiletests"> <java fork="yes" classname="junit.textui.TestRunner" taskname="junit" failonerror="true"> <arg value="ShoppingCartTest"/> <classpath> <pathelement location="build/lib/${app.name}.jar" /> <pathelement location="build/testcases" /> <pathelement location="${junit.dir}/junit.jar" /> <pathelement path="" /> <pathelement path="${java.class.path}" /> </classpath> </java> </target>
利用内置任务:Junit
<target name="junit_test" depends="compiletests"description="Execute Unit Tests"> <junit printsummary="yes"> <test name ="ShoppingCartTest"/> <formatter type="xml" /> <classpath refid="classpath"/> </junit> …… /target>
确定单元测试
一个单元测试一般针对于特定对象的一个特定特性,单元测 试的过程限定在一个明确的线程范围内。 测试单元应该以一个对象的内部状态的转换为基本编写单元 并不是所有的对象特征都需要被编写成独立的测试单元 在有可能引入错误的地方引入测试单元:特定边界条件、复 杂算法、需求变动比较频繁、边界条件比较复杂。
测试程序结构示意图
第一步:编写一个TestCase
1. 定义一个测试类,该类继承自TestCase。 2. 重写setUp()方法以初始化测试中用到的的一个或多个变 量对象。 3. 重写tearDown()方法以释放测试中用到的的一个或多个变 量对象。 4. 定义一个或多个公开的testXXX()方法,这些方法完成实 际的检测功能并提供判断的结果。 5. 定义一个main()方法以批处理的方式执行TestCase。 junit.textui.TestRunner.run(TestCase.class);
利用内置任务:JunitReport
<target name="junit_test" depends="compiletests"description="Execute Unit Tests"> …… <junitreport> <fileset dir="."> <include name="TEST-*.xml"/> </fileset> <report format="noframes" styledir="."/> </junitreport> </target>
编写单元测试
在XP 下强调单元测试必须由类包的编写者负责编写以保证 对象的运行时态行为符合需求
编写单元测试时对相应的类包进行修改时可采用以前的测试 标记和测试技巧
编写单元测试首先分析出状态的变化过程,然后根据状态的 定义确定分析的状态数据,最后是提供这些内部的状态数据 的访问。
维护单元测试
需求总是变化的,单元测试也会根据需求的变化不断的演变。 如果决定修改类的行为规则,针对这个类的测试单元也要进 行修改,以适应变化。 如果对这个类仅有调用关系的类的行为定义没有变化则相应 的单元测试仍然是可靠和充分的。 同时如果包含行为变化的类的对象的状态定义与其没有直接 的关系,测试单元仍然起效。 返回
使用Junit的原因
在提升程序代码的品质时JUnit 测试仍允许更快速 的编写程式 JUnit 非常简单 JUnit 测试检验其结果并提供立即的回馈 JUnit 测试可以合成一个测试系列的层级架构
(续)
编写JUnit 测试所费不多 JUnit 测试提升软件的稳定性 JUnit 测试是开发者测试 JUnit 测试是以Java 写成的 JUnit 是免费的(JUnit is free.)

一般而言,TestSuite 及TestCase 类应定义一个main()方法; main()使用适当的用户界面运行测试,默认为文本界面。前 面的例子到目前为止皆定义一个main()方法来使用文本界面。 使用文本界面执行测试的方式是调用: junit.textui.TestRunner.run(ShoppingCartTest)。 使用图形用户界面执行测试的方式是调用: junit.swingui.TestRunner.run(ShoppingCartTest)。
第四步:组织测试
这里有一些关于如何组织测试的建议:
1. 把测试程序包与要测试的程序代码包(package)分开, 但放在一个项目里。 2. 测试程序包的层次结构应该与要测试的应用程序包的层 次结构保持一致。 3. 为应用程序中的每一层Java 包定义一个相应的 TestSuite 类;在这个TestSuite 类中包含所有测试这个 包内之程序的测试。
配置文件由公共属性和目标树构成。
每个目标都有唯一的名称和可选的相关性,目标相关性需要 在执行目标任务列表之前执行。
每个目标都包含了要执行的任务,其中任务就是可以执行的 代码。
任务分内建和可选两种,任务需设置相关任务属性。
Ant XML 构建图
包含JUNIT任务的Build文件
利用ANT的内置任务Java 来运行junit测试
JUnit 测试程序 测试程序的结构
Test方法:实现某一个基本的测试功能的公有方法, 包含在特定TestCase中,其名字必须是以test开头 的testXXX的格式。 TestCase:测试用例,是基本测试功能的集合,可 以认为TestCase就是一个完整的测试单元。 TestSuite:测试套件,包含一个或多个TestCase或 者TestSuite,便于形成完整测试的分层结构,与项 目程序的分层结构相对应。
JUNIT
内容
Junit入门 编写单元测试 Ant与自动测试 Junit FrameWork介绍 结束语
Junit使用入门
使用Junit的原因 JUnit 测试程序的结构 第一步:编写一个测试用例(TestCase) 第二步:编写一个测试系列(TestSuite) 第三步:执行测试 第四步:组织测试
Ant 的特性包括: 1. 类可扩展性:Java 类而不是shell命令用于扩展构 建特性。 2. 开放源代码:类扩展示例很充足。 3. XML 可配置:假设构建实际上是分层的,那么使 用 XML 描述 make 过程就是其逻辑层。了解 XML 使学习配置构建更简单。
ANT构建文件(Build.xml)
(续)
编写ant的构建文件build.xml 将junit-noframes.xsl文件复制到项目目录下 重起WebSphere Studio Application Developer 在build.xml文件上单击鼠标右键选择“运行ant…” 在项目目录下会生成一个html格式的测试结果文件,打开 即可。 返回
测试层次结构示例
返回
编写单元测试
单元测试的编写原则
确定单元测试
编写单元测试
维护单元测试
单元测试的编写原则
Junit作者的设计目标:
1. 简化测试的编写,这种简化包括测试框架的学 习和实际测试单元的编写; 2. 使测试单元保持持久性; 3. 可以利用既有的测试来编写相关的测试。
(续)
单元测试框架的基本设计考虑依然是从现有的 测试方式和方法出发,而只是使测试变得更加容易 实施和扩展并保持持久性。因此编写单元测试的原 则可以从我们通常使用的测试方法借鉴和利用。
相关文档
最新文档