2016年3月6日星期日

如何使用Jacoco和Gradle查找代码覆盖率?




查找代码覆盖率对于unibet非常重要,因为它可以让您评估unibet工作。如果您已经为应用程序准备了一套unibet套件,但是不确定该unibet套件是否涵盖了多少代码百分比,那么确定代码覆盖范围将是一个好习惯。获得覆盖率报告后,您将确切地知道unibet用例中未覆盖的代码部分,然后可以添加unibet用例来覆盖代码。

Jacoco是Java代码覆盖率工具,可让您计算单元unibet和功能unibet的代码覆盖率。 Jacoco可以与Ant,maven和gradle一起使用。今天,我将向您展示Jacoco与Gradle for Espressounibet服的逐步集成。

我已经为Simple Hello world项目完成了此设置,以了解Jacoco的工作原理,并为您提供适当的代码覆盖率报告。

影片教学-



1.创建一个android项目,如图所示 以前的帖子。
2.在里面创建一个java类 src->main->androidTest 并在课堂上编写您的Espressounibet用例。
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 ->右键单击createDebugAndroidTestCoverageReport-> click on run

Android应用程序的代码覆盖率
Android应用程序的代码覆盖率

6.此操作将在其中运行所有unibet用例 src->main->androidTest并在app-中提供报告>build-> reports ->coverage -> debug.
7.打开 在 dex.html 在浏览器中检查文件覆盖率报告,如下面的屏幕快照所示。

Jacoco代码覆盖率

Android应用程序的详细代码覆盖率
Android应用程序的详细代码覆盖率

从Android Studio获取代码覆盖率
从Android Studio获取代码覆盖率

我希望这篇文章可以帮助您找到unibet服的代码范围:)
请在下面的评论部分中分享您的反馈,并按照质量检查自动化以获取最新的帖子更新。HappyTesting :-)

25条评论:

  1. 不错的工作。。。很长时间以来一直在寻找自动化代码的覆盖范围。。

    回复删除
    回覆
    1. 嗨Anuja,我成功地分别生成了单元unibet和功能unibet代码覆盖率报告。但是我想同时获得一份代码覆盖率报告(即功能unibet和单元unibet)。那可能吗?

      删除
    2. 嗨我不'认为这是不可能的,因为由于使用了不同的构建变体设置,我们无法一起运行单元unibet和仪器unibet。
      直到我将探讨这个主题。

      删除
    3. 是的...我也会探索...这是一个艰难的过程..

      删除
  2. 你好
    这是一个很好的代码覆盖教程。我使用Robotium实现自动化。
    我想获得我项目的代码覆盖率并进行研究,但到目前为止还没有运气。我已经执行了上述所有步骤,但是当我执行步骤5时,它给出了ndk构建错误。我正在使用ndk r10e和android studio 2.0。我能够执行我的unibet用例。你能帮我解决这个错误吗?

    -Kanheiya

    回复删除
  3. 嗨,anuja,此src中的AndroidJococoTestRunner是什么?> main ->androidTest在做什么?即使我删除了此文件并执行其他步骤,它仍然生成了报告。所以你可以澄清一下。 src中的这个AndroidJococoTestRunner是什么?> main ->androidTest在做什么?

    回复删除
  4. 嗨Anuja,

    我正在使用您提到的相同过程来运行jacoco覆盖率报告。
    但是对于所有覆盖率报告,我得到的覆盖率为0%。
    在这里阅读更多-:
    http://stackoverflow.com/questions/38746708/instrumentation-test-jacoco-coverage-report-displays-0-coverage-always

    您能否将示例应用程序托管在github上,以便于后续操作?

    谢谢,
    马扬克

    回复删除
    回覆
    1. 嗨,如果您的任何unibet用例在运行期间失败,那么它将为您提供0%的代码覆盖率。因此,请确保所有unibet用例都通过了。
      问候,
      阿努加

      删除
    2. 嗨Anuja,
      我所有的unibet都通过了,并且仅检查我的标签是否为Hello world。仍然是0%

      能否请你帮忙?

      谢谢
      韦恩

      删除
  5. 我认为这个问题已解决"com.android.support.test:runner:0.4"
    因此,您不再需要定义自己的unibet运行程序。只需将以下内容添加到gradle文件中就足够了。

    buildTypes {
    debug {
    testCoverageEnabled = true
    }
    }

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

    回复删除
  6. 如何在终端上打印unibet结果?所有unibet用例都在src / androidTest文件夹下,而不是src / test下。"testlogging"在gradle中,仅适用于src / test下的unibet用例。

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

      删除
  7. 你好

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

    1.我在单独的项目中有Appiumunibet用例,它不是Android开发人员App代码的一部分。
    2.通过App管理了Appium,TestNG和许多其他依赖项。
    3.开发人员'的应用使用gradle构建。

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


    提鲁
    [[email protected]]

    回复删除
    回覆
    1. 嗨,据我所知,不可能获得Appiumunibet用例的代码覆盖率。但是,如果您找到任何解决方案,也请与我们分享。
      谢谢& Regards,
      阿努加

      删除
  8. 我只想说,您在此处提供的所有信息都非常棒...非常感谢您的博客。.非常感谢您提供这一信息。我希望这对许多人都有用。.我正在等待您的下一篇文章,继续更新这些知识渊博的东西...
    网页设计开发公司
    钦奈网页设计公司
    钦奈网络开发公司

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

    回复删除
  10. 嗨Anuja,
    好的循序渐进教程
    只是检查是否可以在android studio中检查代码覆盖率,而无需检查报告和类似百分比的内容。

    回复删除
  11. 这确实是一项伟大的工作,并且您共享知识的方式也非常好。感谢您的翔实文章

    班加罗尔的硒培训|

    回复删除
  12. 嘿,

    如何为Android SDK生成报告?

    我们的应用程序中使用了android SDK,我们的仪器unibet来验证android SDK在其他模块中(unibet应用程序来验证SDK)

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

    回复删除
  13. 不错的博客。
    有关在班加罗尔进行数据科学培训的信息,请访问:
    班加罗尔的数据科学培训

    回复删除
  14. It’对我们非常有帮助,非常感谢您分享如此精彩的文章。访问Ogen Infosystem,以可承受的价格获得德里的顶级网站设计和PPC服务。
    德里的PPC公司

    回复删除