首页 文章

三叶草:它是如何工作的?

提问于
浏览
5

我目前正在评估三叶草,并想知道如何最好地使用它 . 首先,我想了解它在概念上是如何运作的 .

1)仪器是什么意思?测试调用是否附加到实现的语句中?

2)这是怎么做到的?这些测试实际上是用一些花哨的执行上下文(类似于JRebel)执行的吗?还是更像静态分析?

3)在“三叶草运行”之后,一些数据库被保存到磁盘,并在此基础上生成报告吗? DB格式是否可访问?我的意思是我可以对它进行自己的分析,例如使用我自己的报告工具?数据库包含哪些信息?我能看到测试和实现之间的映射吗?

4)是否有其他工具可以找到测试和实现之间的映射?不只是数字,而是测试,实际上涵盖了一行代码......

谢谢,巴斯特尔 .

2 回答

  • 6

    这是怎么做到的?这些测试实际上是用一些花哨的执行上下文(类似于JRebel)执行的吗?还是更像静态分析?

    在Clover的代码检测期间,它检测哪些方法是测试方法(默认情况下它识别JUnit3 / 4和TestNG) . 这些方法获得额外的仪器指令 . 简而言之,进入测试方法通常会实例化专用覆盖 Logger ,该 Logger 专门测量该测试的覆盖范围 . 有关Clover中每种测试记录策略的更多信息:

    在“三叶草运行”之后,一些数据库被保存到磁盘,并在此基础上生成报告吗?

    Clover数据库(clover.db)包含有关代码结构(包,文件,类,方法,语句,分支)的信息,还包含有关测试方法的信息 . 还有单独的覆盖记录文件(在运行时产生),其包含关于给定代码元素的“命中”数量的信息 . Clover支持全局覆盖(即整个运行)以及每个测试覆盖(即来自单个测试的覆盖) .

    更多信息在这里:

    DB格式是否可访问?

    API仍处于开发阶段(https://jira.atlassian.com/browse/CLOV-1375),但有可能获得基本信息 . 看到:

    有关数据库模型和代码示例的更多详细信息 .

    但问题是:你真的需要手动读取这个数据库吗?你写道:

    我可以在那里看到测试和实现之间的映射吗?

    这样的映射已经由Clover提供 - 例如,在HTML报告中,如果单击源行,它将弹出一个测试方法列表 .

    PS:我是Atlassian的Clover开发人员,如果您有任何疑问,请随时与我联系 .

  • 2

    仪器是什么意思?

    附加代码与您的代码编织在一起 .

    测试调用是否附加到实现的语句中?

    我不确定你的意思,但它可能是指令或调用方法 . JIT在运行时将内联简单的方法 .

    这是怎么做到的?

    有很多方法可以做到,但是通常使用Instrumentation类来捕获何时加载类,并使用像Objectweb的ASM这样的库来操作代码 .

    测试是否实际执行了一些花哨的执行上下文

    上下文计算已执行的行 .

    或者更像静态分析?

    不,它基于所谓的 .

    在“三叶草运行”之后,一些数据库被保存到磁盘,并在此基础上生成报告吗? DB格式是否可访问?

    你最好问三叶草的制作者他们的文件内容 .

    是否有其他工具可以找到测试和实现之间的映射?不只是数字,而是测试,实际上涵盖了一行代码......

    有许多代码覆盖工具,包括EMMA,JaCoCo,Cobertura,IDEA都有一个内置 .

相关问题