喜欢测试的朋友请留下您问题和回答,我们互相学习,互相进步!谢谢!
JAVA测试模式
上一篇 /
下一篇 2010-10-09 15:00:32
/ 个人分类:测试技术类
我们在下面以图表的方式给出 五个常用 JAVA 测试模式详细描述,有关模式的描述类目分别是模式名称、测试对象、针对问题、约束条件、解决方法、实例、约束解决方式和该测试的设计原理。
模式(一) Main 模式
模式名称 | Main |
测试对象 | JAVA 类 |
针对问题 | 测试人员不知道在何处编写驱动和初始化被测试类的测试代码 |
约束 | 测试必须容易运行、测试代码能够访问该类所有的特征(所有的属性和方法) |
解决方法 | 将测试代码放入类的 public static void main(String[] args) 方法中去 |
实例 | public static void main(String[] args){ SomeClass result; // perform. thetest… System.out.print(“result is..”); } |
约束解决 | 该测试代码能够率先被激活和执行、并能够访问被测试类所有的特征 |
设计原理 | JAVA 类可以拥有 public static void main(String[] args) 方法,它是类在 JVM 中被率先执行的方法,控制着整个类的执行逻辑, main 方法能够访问所在类的所有属性和方法 |
模式(二) toString 模式
模式名称 | toString |
测试对象 | 作为运算结果的类 |
针对问题 | 测试人员不知道如何检验一个运算对象的中间结果和最终结果 |
约束 | 测试结果代表对象内部的一个状态,而该状态必须能够被测试 |
解决方法 | 通过使用 toString 方法来对类状态进行描述,描述结果可以通过打印与预期结果进行比较 |
实例 | class SomeClass { //… public String toString(){ // custom representation } } |
约束解决 | 类的内部状态通过字符串来进行表示因而得以解决 |
设计原理 | 在基类定义的 toString() 方法能够提供特定对象的状态的描述,通过将对象状态描述进行打印和显示来判定对象状态是否与预期相符 |
模式(三) Equal 模式
模式名称 | Equal |
测试对象 | JAVA 类 |
针对问题 | 作为运算结果的类 |
约束 | 测试人员不知道如何检验一个运算对象的中间结果和最终结果 |
解决方法 | 定义 equals 方法比较实际结果与预期结果进行比较 |
实例 | class SomeClass { //… public boolean equals(Object o){ // custom comparison } } |
约束解决 | 保持某个状态的对象需要与预期对象进行比较,通过比较后的布尔值来确定是否与预期结果相符合 |
设计原理 | 在基类定义的 public boolean equals(Object) 能够对比对象间的差异并以布尔值形式返回比较结果 |
模式(四) Internal Tester Class 模式
模式名称 | Internal Tester Class |
测试对象 | JAVA 包 |
针对问题 | 测试人员不知在何处编写测试代码测试包中的类 |
约束 | 测试代码与运行代码必须分开来,测试代码能够访问到类的所有特性,测试代码起到的是一个包的客户端的角色。 |
解决方法 | 新建一个类并将该类的包路径与被测试类的包路径相同,然后在该类里写入所有的测试代码 |
实例 | package theOne; public class InternalTestClass { //… } |
约束解决 | 所有的测试代码均与运行代码分离,由于它与运行代码在同一包路径下,所以它与普通的客户端相比具有更多的可视性 |
设计原理 | 将测试代码定义在一个特定的类中。由于测试类与运行类在同一个包路径下,因此它能访问测试类的类的所有特性。因此,它远比客户端测试具有更大的可视性。 |
模式(五) Extern Tester Class 模式
模式名称 | Extern Tester Class 模式 |
测试对象 | JAVA 包 |
针对问题 | 测试人员不知在何处编写测试代码测试包中的类 |
约束 | 测试代码与运行代码必须分开来,测试代码能够访问到类的可视特征,测试代码起到的是一个包的客户端的角色。 |
解决方法 | 新建一个类,指定与被测试类不同的包路径,然后在该类里写入所有的测试代码 |
实例 | package anotherOne; public class ExternalTestClass { //… } |
约束解决 | 所有的测试代码均与运行代码分离,由于它与运行代码在不同的包路径下,所以它与普通的客户端的可视性相同 |
设计原理 | 将测试代码定义在一个特定的类中。由于测试类与运行类不在同一个包路径下,因此它不能访问测试类的所有属性和方法。但是它与客户端具有相同的可视性。因此,它可以替代客户端进行测试。 |
上面五个模式的作用关系如图-1所示:
图-1 JAVA 测试模式图解
了解上述所述的模式有助于测试人员在具体 JAVA 代码测试中编写测试类,同时上述的这些 JAVA 测试模式还可以借助 JUnit 这样的测试框架来实现。
收藏
举报
TAG: