Android自动化单元测试(下)

简介:

承接上文

上一篇单元测试讲了如何在Android Studio中写测试用例,自动化测试并生成测试报告,这一篇主要讲一下扩展工具的使用。

jacoco代码覆盖率

  jacoco是一个检测代码覆盖率的插件工具,那什么是代码覆盖率呢?代码覆盖率简单来说就是单元测试用例所测试到的代码比重,被测试到即是被覆盖。覆盖率高自然是好事,但不能完全说明代码质量高没有bug,生成的覆盖率报告可能大部分情况下也就是应付差事,应付差事,付差事。。。
  呵呵
   在Android Studio中使用jacoco还是比较简单的,只需要更改Module目录下的gradle文件。首先就是导入jacoco插件并指定使用版本。

apply plugin: 'jacoco'
jacoco {
    version "填写版本号,如0.7.9"
}

   指定版本的代码在AS2.x时代可以写在android代码块中,不过到了3.0之后就不推荐了,可以写在外面和android、dependencies一个级别。另外需要在buildTypes下的debug(release应该也可以)中添加支持代码覆盖testCoverageEnable为true。然后就是自定义一个gradle task。

task jacocoTestReport(type:JacocoReport,dependsOn:"test"){  // 1
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."
    classDirectories = fileTree(  // 2
            dir : "$buildDir/intermediates/classes/debug",
            excludes : [
                    '**/R.class',
                    '**/R$*.class',
                    '**/BuildConfig.*',
                    '**/Manifest*.*'
            ]
    )
    def coverageSourceDirs = ['src/main/java']
    additionalSourceDirs = files(coverageSourceDirs)
    sourceDirectories = files(coverageSourceDirs)
    additionalClassDirs = files(coverageSourceDirs)
    executionData = files("$buildDir/jacoco/testDebugUnitTest.exec")  // 3
    reports{  // 4
        xml.enabled = false
        html.enabled = true
        csv.enabled = false
    }
}

  上面的代码有几个点需要注意:

  • 注释1中的type指定了类型,这里就是jacoco的报告,然后他是依据后面dependsOn的task去生成的;
  • 注释2是指定了生成的类文件的目录,其中exclude是排除以下的文件,如果有以下源码不需要进行识别是否覆盖,这里也就要求了命名的规范性;
  • 注释3是最重要的一个部分,这里指向了一个exec文件,jacoco原理上就是根据这个生成的文件去生成自己的报告,不过有一点要注意如果一开始dependsOn的是AndroidTest的任务,这个文件的路径就不一样了而且后缀也不一样,去尝试一下吧;
  • 注释4比较显而易见的就是报告生成的类型,最好还是html。

  依然是在AS的命令终端执行gradlew+task的命令模式,gradlew jacocoTestReport之后终端会自动执行自动化测试并生成测试报告和代码覆盖率报告。代码覆盖率报告生成的前提是所有的测试用例都通过测试。覆盖率报告的样子可以参考下图,红色代表了没有覆盖到:
这里写图片描述

jenkins持续集成

   jenkins是一种持续集成工具,可以监控持续重复的工作,如apk的打包生成等。它的环境搭建不是这里重点说的,网上的例子也很多。用过这个工具的应该也对它支持gradle构建Android apk有所了解,在自动化测试的部分用到它也是用到了它能够对Android项目自动打包,同时支持插件的扩展。
   为了能够支持单元测试,jenkins需要安装junit插件,如果想增加对代码覆盖率的支持,就需要安装本文介绍的jacoco的插件。由于这一部分并不是所有技术人员都会参与,所以主体内容就省略,直接跳转到如何配置构建的命令一步。
这里写图片描述
   上图中就是对一个jenkins任务的配置,这里的构建就是项目在构建时所需要做的一些工作,首先选择合适版本的gradle,然后就是添加gradle所需要执行的tasks。保存之后在该项目的控制面板中点击立即构建,会出现一个正在构建的任务,这个过程可能比较漫长。构建成功之后可以在对应的jenkins的工作目录下的该项目目录找到生成的报告。特别提醒一下,这次构建gradle会自动为我们生成lint报告,方便了代码review。

总结

   两篇文章其实也只是简单介绍了Android的自动化单元测试,介绍了移动端自动化测试的可行性。不过也有很多没有涉及或介绍不细之处,如其他的单元(UI)测试框架,对jenkins的使用等等。准备仓促,而且也不是专业测试开发人员,最后列出一下参考文章以拓展。

参考文章

Android单元测试框架Robolectric3.0介绍
Jenkins构建Android项目持续集成之简介篇(这是一个系列)

目录
相关文章
|
23天前
|
前端开发 JavaScript 测试技术
前端自动化测试
前端自动化测试是通过使用工具和脚本自动执行测试用例的过程,旨在提高测试效率、减少人为错误,并确保Web应用的功能在不同环境和设备上的一致性与稳定性。
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
106 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
21天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
29天前
|
机器学习/深度学习 SQL 安全
如何确保自动化安全测试的全面性和准确性
确保自动化安全测试的全面性和准确性,需集成多种工具(如SAST、DAST、IAST、SCA),编写自动化测试脚本,融入CI/CD流程,定期更新测试用例和工具,使用真实数据,持续维护代码,模拟攻击场景,运用机器学习,采用智能测试平台,并结合手动测试。这些策略有助于及时发现并修复安全问题,提升软件安全性。
|
3月前
|
测试技术 UED Python
探索软件测试的边界:自动化与手动测试的协同
【8月更文挑战第59天】在追求效率和质量的软件生产中,自动化测试与手动测试的辩论从未停止。本文将通过实际案例,揭示二者如何相辅相成,共同构建更健壮的软件测试体系。我们将深入探讨自动化测试的优势、手动测试不可替代的角色以及它们如何在实际项目中协同工作,旨在为读者提供一种平衡的视角来看待软件测试的实践。
136 65
|
1月前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
1月前
|
机器学习/深度学习 SQL 安全
如何确保自动化安全测试的全面性和准确性?
如何确保自动化安全测试的全面性和准确性?
|
1月前
|
测试技术 开发者 UED
探索软件测试的深度:从单元测试到自动化测试
【10月更文挑战第30天】在软件开发的世界中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的不同层次,从基本的单元测试到复杂的自动化测试,揭示它们如何共同构建一个坚实的质量保证体系。我们将通过实际代码示例,展示如何在开发过程中实施有效的测试策略,以确保软件的稳定性和可靠性。无论你是新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
2月前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
130 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
280 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目