有没有办法将代码从列入Cobertura覆盖率报告中排除? 我们有一些方法不应该包含在覆盖报告中,因此不会降低覆盖率。 我知道三叶草有这样的function,但是我没有发现类似于Cobertura的东西。
我已经search了这个互联网上下。 有很多半的答案,与Maven属性(如${sonar.jacoco.reportPath}或org.jacoco:jacoco-maven-plugin:prepare-agent或设置maven-surefire-plugin argLine maven-surefire-plugin argLine和-javaagent 。 一些如何,这些答案,无论是自己,还是组合,正在产生我所追求的:一个覆盖报告,显示一个类,如果它被用于堆栈中较高的testing,如正在使用的实体通过DAO,即使它没有被自己的模块中的testing完全覆盖。 有没有一个确定的configuration,为了达到这个目的?
鉴于软件在哪里… 该系统由几个子系统组成 每个子系统由几个组件组成 每个组件都使用很多类来实现 …我喜欢编写每个子系统或组件的自动化testing。 我不写一个组件的每个内部类的testing(因为每个类都有助于组件的公共function,因此可以通过组件的公共API从外部testing/testing)。 当我重构组件的实现时(我经常这样做,作为添加新function的一部分),因此我不需要改变任何现有的自动化testing:因为testing只依赖于组件的公共API和公共API通常是扩大而不是改变。 我认为这个政策与像重构testing代码 ( Refactoring Test Code )这样的文档形成了鲜明的对比。 “…unit testing…” “…系统中每个class的testing课程…” “…testing代码/生产代码比…理想地认为接近1:1的比率…” …我想所有这些我都不同意(或者至less不练习)。 我的问题是,如果你不同意我的政策,你会解释为什么吗? 这种testing程度在哪些情况下不足? 综上所述: 公共接口被testing(并重新testing),很less发生变化(它们被添加到但很less被修改) 内部API隐藏在公共API的后面,可以在不改写testing公共API的testing用例的情况下进行更改 脚注:我的一些“testing用例”实际上是作为数据实现的。 例如,UI的testing用例由包含各种用户input的数据文件和相应的预期系统输出组成。 testing系统意味着具有testing代码,其读取每个数据文件,将input重放到系统中,并声明它获得相应的期望输出。 尽pipe我很less需要更改testing代码(因为公共API通常被添加到而不是被改变),但是我确实发现有时(例如每周两次)需要改变一些现有的数据文件。 这可能会发生在我更改系统输出时(即新function改进了现有输出),这可能会导致现有testing“失败”(因为testing代码只会试图断言输出没有改变)。 为了处理这些情况,我做了以下工作: 重新运行自动化testing套件,该testing套件包含一个特殊的运行时间标志,该标志告诉它不声明输出,而是将新的输出捕捉到一个新的目录 使用可视化差异工具来查看哪些输出数据文件(即,哪些testing用例)已经改变,并且鉴于新function,validation这些改变是好的并且如预期的那样 通过将新目录中的新输出文件复制到运行testing用例的目录(覆盖旧testing)来更新现有testing 脚注:“组件”是指像“一个DLL”或“一个程序集”这样的东西……这个东西足够大,可以在系统的体系结构或部署图上看到,通常使用几十个或100个类来实现,使用一个只包含大约1个或几个接口的公共API …可以分配给一个开发团队(将不同的组件分配给不同的团队)的东西,因此根据Conway定律一个相对稳定的公共API。 脚注:文章面向对象testing:神话与现实说, 神话:黑盒testing就足够了。 如果你使用类接口或规范来做testing用例devise的细致工作,那么你可以放心,这个类已经被充分运用了。 白盒testing(看一个方法的实现来devisetesting)违反了封装的概念。 现实:面向对象的结构问题,第二部分。 许多研究表明,开发人员认为彻底彻底的黑盒testing套件只能在被testing的实现中使用三分之一到一半的语句(更不用说path或状态)。 这有三个原因。 首先,所select的input或状态通常会执行正常path,但不会强制所有可能的path/状态。 其次,黑盒testing本身并不能揭示出惊喜。 假设我们已经testing了被测系统的所有指定行为。 为了确信没有不明确的行为,我们需要知道系统的任何部分是否未被黑盒testing套件行使。 这个信息可以通过代码工具获得。 第三,在不检查源代码的情况下常常难以执行exception和error handling。 我应该补充一点,我正在做白盒functiontesting:我看到了代码(在实现中),我编写了functiontesting(驱动公共API)来执行各种代码分支(function实现的细节)。
我想知道.net(或C#专门)的代码覆盖率,特别是在较低的价格段? 我不是在寻找build议,而是根据事实对产品进行比较。 我知道以下几点: NCover 似乎很受欢迎,看起来相当不错 支持报表覆盖和分支报道 “NCover 3 Complete”为480美元 较旧的Beta版本免费提供 Visual Studio(2008 Pro)| (2005年团队系统(开发,testing或团队套件版本)) 那么,这是微软,所以我希望它能正常工作 完全集成到Visual Studio中 至less$ 5,469 PartCover 开源 支持语句覆盖 OpenCover – PartCover的继任者 开放源代码 支持分支和语句覆盖 32位和64位支持 Silverlight支持 背景 主要开发人员在CodeProject上进行的教程 SDtesting覆盖率 使用32位和64位,完整的C#4.0 处理小和非常大的代码库 单用户许可250美元 JetBrains dotCover 个人许可$ 100。 免费用户组,开源项目,学生和教师。 支持语句覆盖 Silverlight支持 NCrunch 个人许可证$ 159 $ 289为商用座位牌照*在testing期间免费, 成为商业,价格未知 未知 。 代码覆盖指标在Visual Studio中 连续(近实时)testing 可视化的每个testing代码覆盖率 性能指标,并行多核testing执行 […]