测量Java测试用例中的输入覆盖率

测量Java测试用例中的输入覆盖率,java,code-coverage,Java,Code Coverage,是否可以测量有多少不同的输入从现有测试用例传递到被测试类的方法 我想测量一些东西,比如代码覆盖率,但不是输入。我不知道有任何COTS工具可以计算输入覆盖率,所以我希望您必须构建一个能够满足您需求的工具 我的技术论文描述了一种为任意语言构建测试覆盖率工具的方法,该方法使用一个函数将任意探测插入源代码中 本文的重点自然是构建代码覆盖率,但探针插入技术是通用的,您可以决定放置探针的位置以及它们的作用。在您的例子中,您希望只在方法入口放置探测,并且希望探测跟踪输入参数实例。本文展示了如何通过使用源代码模

是否可以测量有多少不同的输入从现有测试用例传递到被测试类的方法


我想测量一些东西,比如代码覆盖率,但不是输入。

我不知道有任何COTS工具可以计算输入覆盖率,所以我希望您必须构建一个能够满足您需求的工具

我的技术论文描述了一种为任意语言构建测试覆盖率工具的方法,该方法使用一个函数将任意探测插入源代码中

本文的重点自然是构建代码覆盖率,但探针插入技术是通用的,您可以决定放置探针的位置以及它们的作用。在您的例子中,您希望只在方法入口放置探测,并且希望探测跟踪输入参数实例。本文展示了如何通过使用源代码模式来指示插入点,将探针放置在任意位置;方法项很容易描述为一种模式

捕获输入实例更麻烦,但可行。你必须决定什么是“输入”;它只是参数值,还是参数的某种深层副本?可能您需要做的是创建(每个插入指令的方法)一个对象类型,其数据成员对应于参数,使用参数的副本(到适当的深度)实例化这样一个对象,并将该对象存储在每个方法的哈希表中。(一旦您知道作为代码习惯用法要做什么,transforamtion规则就可以插入所有这些内容)。所有这些,在执行时,您的哈希表建立参数集,这是您想要的关键

通过控制在哈希表中插入重复项时发生的情况,可以(连续)计算唯一参数集实例;该计数(每个方法)可以在程序完成时导出的全局数组中进行管理。本文讨论了这种全局数组,以及导出/显示它的各种方法


我们的和系列是使用本文中的技术构建的。分析器在这样的全局数组中保存计数/时间(基本上是您需要的),并将它们导出到显示引擎,该引擎绘制热直方图,显示热点的位置。这些显示引擎是语言和探测数据源不可知的现成工具,因为它们包含在我们的任何(探查器)工具中,包括Java探查器,因此您可以将其中一个用于显示任务。

当然,这是可能的。检测代码以收集所有输入并计数。你想要一个能做到这一点的工具吗?我不知道Clover是否有这个功能,但它是一个编写测试代码的好插件@Ira我正在寻找一个工具。但我想这是可以做到的。我去查一下三叶草。我一直在用EclEmma。