诊断Java代码: 单元测试与自动化代码解析协同工作[Java编程]
本文“诊断Java代码: 单元测试与自动化代码解析协同工作[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
支持静态解析(包含范例查抄)的主要论据是:后来果实用程序全部大概的运行,而通过单元测试只能保证被测试的组件(在测试它们的平台上)只实用测试组件的特定输入.
支持单元测试的主要论据是它更简单处理.您可以测试程序的很多约束,这些约束远远超越了同期的静态解析工具所能到达的范围.
请答应我在此冒昧地说一句:我认为将这两种工具看做对峙的是一个错误.每种工具都有助于构建更结实的程序.实际上,它们可以通过非常强盛的方法举行互补.
每种工具都有各自的所长,关于增补另一种工具分外有效:
单元测试能显示履行的常用处径,从而显示程序是若何运行的.
解析工具能查抄单元测试供应的覆盖范围.
让我们研究这此中的每个属性,并谈论一些可帮忙您将其所长带给别的办法的工具.
显示常用履行途径的单元测试
单元测试套件供应了程序组件的示例用法的安定底子.通过查抄测试运行时程序是若何运作的,解析工具可以就开辟人员但愿在程序中保持的不变量举行摸干脆猜测(就和程序员阅读单元测试所做的一样).
还有另一种办法,此中单元测试可以是一种可履行的文档情势.在从单元测试的运行中 从特别到普通地推断出猜测性不变量之后,解析工具可以尝试 从普通到特别地考证不变量的存在,大概它可以操纵可在运行时查抄的断言注释该代码.
在任何一种情形下,在该工具做任何别的工作之前,最好向用户返回猜测的不变量集的报告,以询问用户真正想要哪些不变量.趁便提一下,假如此类工具向用户报告了很多他们不想要的不变量,这大概是单元测试出了问题的信号 ― 比方,它们不够普通.
可用这种方法与单元测试一同利用的工具是 Daikon,它是一款来自 MIT 的 Mike Ernst 的程序解析小组的免费的、试验性的工具.Daikon 解析程序的运行(比方单元测试的运行),并尝试猜测不变量.然后它询问用户能否想要这些不变量,并将用户想要的不变量作为断言插入程序.
比方,假定我们编写一个向量(Vector)的适配器,该适配器实现接口 Sequence ,该接口包含用于检索元素的办法 lookup 和用于将元素放在向量末尾的办法 insert .办法 lookup 带有一个索引 i ,用来拜候它所包含的向量.
假定该数组的长度存储在字段 length 中.通过保护适配器中的长度,我们可以不告诉向量本身就将元素从其尾部删除.
让我们为这个假想的简单适配器编写一个简单的测试用例:
清单 1. 向量容器中简单查找办法的测试用例
import junit.framework.TestCase;
public class VectorAdapterTest extends TestCase {
public VectorAdapterTest(String name) {
super(name);
}
public void testLookupAndInsert() {
VectorAdapter v = new VectorAdapter();
v.insert("this");
v.insert("is");
v.insert("a");
v.insert("test");
assertEquals("Retrieved and inserted elements don't match",
"a",
v.lookup(2));
}
}
以上是“诊断Java代码: 单元测试与自动化代码解析协同工作[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |