2016年3月6日星期日

如何找到与jacoco和gradle的代码覆盖范围?




查找代码覆盖对于测试非常重要,因为它允许您衡量您的测试工作。如果您对申请准备了测试套装,但您不确定测试套装是否覆盖额度的代码额度的额度是多少,这将是良好的做法。获得覆盖报告后,您将完全了解您的测试用例中未涵盖代码的部分,然后您可以添加测试用例以覆盖代码。

Jacoco是Java代码覆盖工具,允许您计算单元测试和功能测试的代码覆盖范围。 Jacoco可以与Ant,Maven和Gradle一起使用。今天,我将通过Gradle逐步一体化,与Gradle进行浓缩咖啡试验套装。

我为简单的Hello World项目做了这个设置,以便了解Jacoco如何工作,并为您提供合适的代码报告。

视频教程 -



1.创建Android项目,如我所示 以前的帖子。
2.在内部创建Java类 SRC->main->androidTest 并在课堂上写下您的浓缩咖啡测试案例。
3.创建一个名为的新课程 Androidjococotestrunner. SRC - > main ->androidTest 并在课堂内复制以下代码。


import 和roid.os.Bundle;
import 和roid.support.test.runner.AndroidJUnitRunner;
import 和roid.util.Log;

import java.io.IOException;
import java.lang.reflect.Method;
import java.nio.charset.Charset;


public class AndroidJacocoTestRunner extends AndroidJUnitRunner {

    private static final Charset UTF8 = Charset.forName("UTF-8");

    static {
//    System.setProperty("jacoco-agent.destfile", "/sdcard/coverage.ec");
    }

    @Override
    public void finish(在t resultCode, Bundle results) {
        try {
            Class rt = Class.forName("org.jacoco.agent.rt.RT");
            Method getAgent = rt.getMethod("getAgent");
            Method dump = getAgent.getReturnType().getMethod("dump", boolean.class);
            Object agent = getAgent.在voke(null);
            dump.在voke(agent, false);
        } catch (Throwable e) {
            final String trace = Log.getStackTraceString(e);

            try {
                System.out.write(trace.getBytes(UTF8));
            } catch (IOException ignored) {
            }
        }

        super.finish(resultCode, results);
    }
}

4.打开 应用程序-> build.gradle and  copy below code in defaultconfig..

testInstrumentationRunner "com.example.anuja.myapplication1.AndroidJacocoTestRunner"

还在BuidTypes中添加下面给出的代码。


debug {
            testCoverageEnabled = true
        }

5.然后点击右侧的Gradle Android Studio - > click on refresh -> other ->右键单击createDebandroidtestCoverageverageRageRoper - > click on run

Android应用程序的代码覆盖范围
Android应用程序的代码覆盖范围

6.此操作将在内部运行所有测试用例 SRC->main->Androidtest并在应用程序中给出报告 - >build-> reports ->coverage -> debug.
7.开放 在dex.html. 文件在浏览器中以检查代码覆盖率报告,如下下面截图所示。

雅各布代码覆盖范围

适用于Android应用程序的详细代码覆盖范围
适用于Android应用程序的详细代码覆盖范围

获取Android Studio的代码覆盖
获取Android Studio的代码覆盖

我希望这篇文章有助于您找到您的测试套装的代码覆盖:)
请在下面的评论部分分享您的反馈,然后按照QA自动化以获得最新的更新.Happy测试:-)

28评论:

  1. 很好的工作....很长一段时间正在寻找自动化代码覆盖范围....这篇文章让我的一天

    回复删除
    答案
    1. 嗨Anuja,我成功地分别生成了我的单元测试和功能测试代码报告。但我希望(I.E功能测试和单元测试)的组合代码报告报告。那可能吗?

      删除
    2. 嗨,我不't认为是不可能的,因为我们无法运行单元测试和仪器测试,由于正在使用不同的构建变体设置,因此套件。
      直到我将探索这个主题。

      删除
    3. 是的......我也会探索......它是一个艰难的..

      删除
    4. 伟大的文章 和roid based projects

      钦奈的Java培训 钦奈的项目中心 钦奈的Java培训 CSE项目 角度训练涵盖了各种主题,包括组件,角度指令,角度服务,管道,安全基础,路由和角度可编程性。新的角度训练将奠定基础,您需要专注于单页应用程序开发人员。 角训练 钦奈项目中心

      删除
  2. 你好,
    这是代码覆盖的良好教程。我正在使用Robotium进行我的自动化。
    我想为我的项目获得代码覆盖,并进行研究,但直到现在没有运气。我已经遵循了上述一切,但是当我执行第5步时,它就会给出NDK构建错误。我正在使用NDK R10E和Android Studio 2.0.i能够执行我的testcases.Can,你帮我出错了吗?

    -Kanheiya.

    回复删除
  3. 嗨Anuja这个Androidjococotestrunner在SRC中是什么 - > main ->Androidtest在做什么?即使我删除了这个文件并遵循其他步骤,它仍然生成了报告。所以你可以清除。这个androidjococotestrunner在src - > main ->Androidtest正在做什么?

    回复删除
  4. 嗨Anuja,

    我正在使用与您提到相同的程序运行Jacoco Coverage报告。
    但是对于所有覆盖报告,我将获得0%作为保险。
    阅读更多内容 - :
    http://stackoverflow.com/questions/38746708/instrumentation-test-jacoco-coverage-report-displays-0-coverage-always

    您能否在GitHub上托管您的示例应用程序,以便更容易跟进?

    谢谢,
    玛克

    回复删除
    答案
    1. 嗨,如果您的任何测试用例在运行期间发生故障,那么它将为您提供0%代码覆盖范围。因此,请确保所有测试用例都通过。
      问候,
      安努阿

      删除
    2. 嗨Anuja,
      我所有的测试都通过,只需检查我的标签是你好世界。它仍然是0%。

      能否请你帮忙?

      谢谢
      韦恩

      删除
  5. 我认为这个问题是固定的"com.android.support.test:runner:0.4"
    因此,您不再需要定义自己的测试跑步者。只需将以下添加到Gradle文件就足够了。

    buildtypes {
    debug {
    testcoverageenabled = true
    }
    }

    Reference: //code.google.com/p/android/issues/detail?id=170607

    回复删除
  6. 如何在终端上打印测试结果?所有测试用例都在SRC / Androidtest文件夹下而不是SRC /测试。"testlogging"在SCRC /测试下,Gradle仅用于测试案例。

    回复删除
    答案
    1. check out this http://qaautomated.blogspot.in/2016/03/how-to-log-test-cases-in-android-studio.html

      删除
  7. 你好

    我想知道Appium中的代码覆盖的可能性。

    1.我在单独的项目中有Appium测试用例,它不是Android开发人员应用程序代码的一部分。
    2.使用Appium,Testng和许多其他依赖性通过Maven管理。
    3.开发人员'S应用程序使用Gradle Builds。

    任何建议都会有所帮助。谢谢阅读 :)



    [[email protected]]

    回复删除
    答案
    1. 嗨,根据我的理解,无法获得Appium测试用例的代码覆盖。但如果您发现任何解决方案也与我们分享。
      谢谢& Regards,
      安努阿

      删除
  8. 我只是想说你在这里给出的所有信息都是很棒的......伟大而漂亮的博客谢谢分享..这对你来说非常感谢。我希望这对很多人都有用..我等着你的下一个帖子继续更新这些知识渊博的东西......
    网页设计发展公司
    钦奈网页设计公司
    钦奈的Web开发公司

    回复删除
  9. 这真是太棒了......感谢分享....提供更有用的信息......
    移动应用开发公司

    回复删除
  10. 嗨Anuja,
    步骤教程很好
    只需检查android Studio中的代码覆盖率,才检查代码覆盖,而无需查看类似的报告和百分比。

    回复删除
  11. 这真是一个很好的工作,你分享知识的方式很棒。谢谢你的信息丰富的文章

    班加罗尔的硒培训|

    回复删除
  12. 嘿,

    如何为Android SDK生成报告?

    我们在我们的应用程序中使用了Android SDK,我们的仪器测试验证了Android SDK在其他模块(测试应用程序验证SDK)

    您能解释一下如何启用代码覆盖率吗?

    回复删除
  13. 漂亮的博客。
    对于班加罗尔的数据科学培训,访问:
    班加罗尔的数据科学培训

    回复删除
  14. It’对我们非常有帮助,非常感谢您共享这样一个惊人的文章。以实惠的价格访问德里顶级网站设计和PPC服务的Inogerodoyystem。
    德里的PPC公司

    回复删除
  15. 令人敬畏的链接,它帮助了我很多。感谢分享。
    班加罗尔的UIPATH培训

    回复删除
  16. appslure是一个获奖的奖励 移动应用开发公司 建筑功能包装和交互式移动应用程序,用于启动,中型和大型企业。

    回复删除