首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gradle For Android(6)--测试单元

但是最近Google让开发者们可以更容易的接入这些测试了。 很多旧的Framework已经升级,而新的Framework也可以保证我们可以在APP和Library中访问这些。...如果你不想执行整个测试流程,而只是执行一个特定的测试类,你可以使用test标志位: $ gradlew testDebug --tests="*.LogicTest" 执行测试任务不仅仅只会执行Test...最后一个依赖espresso-contrib是Espresso的一个补充库,而不是核心库。 这些依赖使用androidTestCompile进行配置,而不是testCompile。...一旦连接了设备后,就可以通过gradlew connectedCheck来运行测试任务。...而生成这个报告的任务名为createDebugCoverageReport。即使它没有在文档中记录,并且也没有在task列表中,而当你执行gradlew tasks时,它就会直接运行的。

1.7K40

Android开发者的UI自动化测试上手指南

这不可避免的需要我们重复UI操作去覆盖测试路径,通过查看界面内容和日志输出验证问题。而UI自动化测试恰恰可以满足这一点,减少我们重复操作ui验证的步骤。...我们把自己作为使用程序的最终用户,要让机器模拟我的测试过程,那么就需要针对那些我能看到的东西,也就是UI组件进行验证。...再直观一点,我们测试向一个EditText输入一段文字,那么整个过程就可以描述为: 找元素:找到EditText组件; 做操作:向EditText输入字符串; 检查结果:EditText显示了我输入的字符串...运行Test Case 在Android Studio的终端中输入gradlew connectedAndroidTest 或 gradlew cAT执行测试用例。 整体运行效果如下: ? 5....后续将会对单元测试进行说明,共同学习,相互提升。

85220
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    当 Espresso 遇见 Android 单元测试

    作者:施亮 团队:腾讯移动品质中心TMQ 引言 在Android单元测试中,不依赖Android环境的可以使用Junit。...如果依赖Android环境,但是没有UI相关或者UI比较简单(如点击按钮)的单元测试可以使用开源库Robolectric解决依赖问题,使测试运行在JVM上,而非模拟器上,大大提高测试运行效率。...测试对象 如果项目是组件化开发的架构,将各个同类功能的代码整合在一个组件中,以便整体打包,便于维护,模块解耦合,持续构建单元测试等,可以减少底层修改导致上层错误的风险。...因为Android更改UI只能在UI线程中进行,所以改变控件属性的代码只能写在Activity的代码中,而不是Espresso的测试代码中。...Espresso需要做的事情,就是在已经做好的Activity提交不同的已定义命令,来执行UI控件不同的函数,并检查结果,达到单元测试目的。

    2.5K10

    第十二章 Android Gradle测试

    对于研发来说,测试永远都是绕不开的,通过测试我们可以减少bug率,提高产品的质量。测试有黑白之分,我们这里主要讲白盒测试,也就是基于现有代码逻辑的测试,比如单元测试等。...等四大组件测试、UI自动化测试、espresso UI测试框架等可以参考官方文档。...12.1 基本概念 在Android Gradle中,测试应用相关已经被作为项目的一部分,而不再是一个单元的测试工程了,这对我们一起管理引用代码比较方便。...在androidTest SourceSet里我们可以依赖各种测试库,写很多方面的测试用例,比如单元测试的、集成测试的,espresso UI测试的,uiautomator自动化测试的等等。.../gradlew connectedCheck即可运行我们的测试,这个任务是一个引导性质的任务,它首先会使用androidAndroidTest任务构建好测试应用和被测试应用,其中被测试应用又是被assembleDebug

    54420

    Android 单元测试和 UI 测试初步实践

    环境下才能运行 接下来,笔者将尝试为自己的项目(基于 MVP 架构开发)补充相应的单元测试用例和 UI 测试用例,来初步实践下如何在 Android 平台编写和运行相关的测试用例。...它跟 @Rule 注解几乎相同,可以在所有类方法开始前进行一些相关的初始化调用操作。使用这个注解,可以在执行测试用例的时候加入特有的操作,而不影响原有用例代码,有效减少耦合程度。...至此,一个 Android 的单元测试用例编写完成。通过 Android Studio 直接运行此单元测试用例,结果如下: ?...总结 本文主要从测试的两个不同粒度:单元测试和 UI 测试入手,综合参考 Google Sample 项目中的测试代码,做一个初步实践,分析编写并运行相关的测试用例。...,这里的业务逻辑不仅仅是指业务需求,还包括其他需要维护的业务或公共代码逻辑; 在做单元测试时,个人认为测试的业务逻辑不需要跨很多页面,在当前页面执行即可,以免增加单元测试用例的维护成本; 单元测试用例并不能直接提升代码质量

    2.1K10

    【Android Gradle 插件】TestOptions 配置 ④ ( org.gradle.api.tasks.testing.Test 单元测试配置类 | Android 单元测试示例 )

    二、单元测试示例 单元测试类 gradle 配置 1、右键运行单元测试 3、执行单元测试 Gradle 任务 4、查看单元测试命令行输出 5、查看单元测试报告 Android Plugin DSL Reference...启用 TestNG 支持 , 也就是启用 单元测试 , 默认的单元测试类型是 JUnit 单元测试 ; useTestNG() 3、设置 JVM 系统属性 为测试的 Java 虚拟机 ( JVM )...设置系统属性 , Gradle 中的单元测试 运行在独立的 JVM 虚拟机中 , // set a system property for the test JVM(s) systemProperty...:espresso-core:3.3.0' } 1、右键运行单元测试 在单元测试类中 , 鼠标右键点击单元测试方法名 , 即可执行该方法 ; 注意 : 在单元测试类中 , 点击右键运行不会生成测试报告..., 执行结果 : 3、执行单元测试 Gradle 任务 标准的单元测试 , 需要在 Terminal 中执行 gradlew :app:testDebugUnitTest 命令 , 执行单元测试

    1.4K20

    【测试左移专栏】用 Powermock 和 Mockito 来做安卓单元测试

    Robolectric:一个单元测试框架,可以清除Android SDK(通过shadow技术),以便您可以测试驱动Android应用程序的开发,测试JVM内部运行,用例执行速度很快。...Mockito:一个针对 Java 的单元测试模拟框架,它与 EasyMock 和 jMock 很相似,都是为了简化单元测试过程中测试上下文 ( 或者称之为测试驱动函数以及桩函数 ) 的搭建而开发的工具...使用过程中总体感觉Espresso功能比较强大,只要合理的使用其提供的api和matches规则,常用的UI逻辑基本都可以模拟,但唯一不爽的就是每次都要连接手机或者模拟器才能运行,Run的过程中,首先会打包...6、几种场景的单元测试用例案例 单元测试用例设计,格式可以自己灵活去定义,另外也可以在代码中已Javadoc的方式添加单元测试用例内容,输入、输出、断言几点明确就可以了。...9、生成覆盖率报告 在Android Studio的Terminal中输入Gradlew JacocoTestReport后,单元测试开始运行,无错误结束后就会在指定的报告生成目录下看到覆盖率结果了。

    4.3K00

    在Android Studio环境下建立UiAutomator环境

    一个Android Studio项目分层三个区域:普通单元测试区、Android单元测试区以及Android产品代码区;命令androidTestImplementation '包名'只能在Android...单元测试区使用,testImplementation '包名'可以在“普通单元测试区”和“Android单元测试区”使用;而命令implementation '包名'只能在Android产品代码区使用。...因为我们的UiAutomation是属于Android单元测试的,所以通过命令:androidTestImplementation'com.android.support.test.uiautomator...最后我们在Android单元测试区建立我们的测试代码myclass。(androidTest为Android单元测试区、test普通测试区、main为Android代码开发区) ?...类似UiSelector类的作用。但是UiObject2类对于SDK一些虚拟设备中的控件的操作会出现一些意想不到的空指针异常,估计是这个类还不太完善,我在近期是不会使用的。

    2.3K30

    我不使用Android Data Binding的四个理由

    3、单元测试也不能用了 我非常喜欢Robolectric和Mockito,他们节约了我很多时间在创建和运行测试实例的时候,没有了他们我将无法工作。...Data Binding的一个特性对于我来说是一个bug:如果layout发生了异步更新,那就意味着在我设置了绑定之后单元测试中我无法确定view上的数据是否正确。...我记得google用Espresso实现的测试框架,但如果有可能的话我还是希望用单元测试的方式来测UI。...我喜欢将Activities、Fragments和Views分开来测试而不是在一个大的Instrumentation Test中导入他们。...为什么你会使用Data Binding 1、我可以开发的更快 长远来看,快速并不一定总是好的。当我们开发app的时候,我们是在跑一场马拉松而不是一次百米冲刺……不是吗?

    45630

    【Dev Club 分享】安卓单元测试:What, Why and How

    这些都是我的切身感受,我相信也是多数真正实践过单元测试的人的切身感受,而不是为了宣传这个东西而说的好听的大话。...打个比方,开车这件事情,需要很多时间吗?我相信很少人会说开车这件事情需要很多时间,而是: 学习开车,需要一定的时间; 如果路面不平的话,那么修路需要一定的时间。 单元测试也是类似的道理。...运行一次app需要多少时间,我相信大家都是有深刻体会的,gradle有多慢,相信大家也是有深刻体会的。 单元测试可以减少bug,尽早发现bug,从而减少了debug和fix bug的时间。...虽然说本身就是一个非常优秀的设计,而不仅仅是为了单元测试,但离开单元测试,使用依赖注入就少了很有说服力的一个理由。 那么这里我就介绍一下,怎么样把Dagger2应用到单元测试中。...这个是随着自身做单元测试的技术而定的,刚开始的时候,可以能比较底层,比较好测的代码入手,慢慢的再扩大范围 Q6:单元测试的粒度,不能保证业务功能是正常的,你们有更大粒度的自动测试吗?

    1.4K60

    quarkus依赖注入之八:装饰器(Decorator)

    Espresso,而没用getClass().getSimpleName(),这是因为在quarkus容器中,Espresso的bean并非Espresso类型,而是动态生成的代理类,所以getClass...Espresso,而CaramelMacchiato的delegate注入的是Latte呢?...Espresso,CaramelMacchiato装饰的是Latte 单元测试类 最后是单元测试类,成员变量的类型是Coffee,也就是说quarkus容器会自动注入装饰过的CaramelMacchiato...,如下图,单元测试通过表示coffee注入的是CaramelMacchiato类型的bean,再看右侧的日志,CaramelMacchiato的成员变量delegate是Latte类型,Latte的成员变量...,CaramelMacchiato的优先级更大,因此更靠近Espresso,由它去装饰Espresso,Latte离Espresso更远,所以它装饰的是CaramelMacchiato 再次运行单元测试

    62620

    腾讯TMQ在线沙龙回顾|单元测试(Android)

    想知道活动分享了啥吗, 请往下看吧! 活动嘉宾 ? 嘉宾简介 刘洋,腾讯应用宝高级测试工程师,目前主要负责应用宝业务的代码分析、精准测试、工具建设等。在安卓客户端、后台类领域测试有比较丰富的经验。...答:开发和测试比为8:1,单元测试现在暂时是测试人员写,只写重点功能。 2、单间介绍一下单元测试框架主要包括哪些吗?...6、如果被调用的方法都是用getinstance调用的还能mock? 答:可以。 7、怎么保证单元测试的质量以及可维护性? 答:见《单元测试的艺术》一书中的优秀的单元测试特性。...8、开发有必要学搞测试框架吗? 答:正常情况下,单测的工作是开发做的,我们是推动他们去写,如果有个好的测试框架,很易用,开发当然乐意。 9、如果是fragment如何mock?...答:3.2.2以上,我记得好像最新是这个版本。

    1.8K60

    Android使用Espresso实现UI自动化测试

    框架是google官方大力推荐的一套测试框架,所以无论如何都要学习一下的.另外,自Android Studio2.2版本开始,google就为Espresso框架内置了一个图形化界面,用来自动生成单元测试代码...; } } 首先需要在测试用例类的类体前添加@RunWith的注解,并设置测试运行平台为AndroidJUnit4 如果允许测试需要较大消耗,可以使用@LargeTest注解 设置ActivityTestRule..., 具体的体现就是当你运行这段测试代码时,app将会直接打开 MainActivity界面然后进行你所定义的测试用例。...@Test @Test public void testLogin() { ... } 定义一个测试方法,当你的测试类运行时,所执行的代码就是Test注解下的方法(Espresso还提供了其他的一些注解...: 比如@After,@Before等,具体的用法可以去我上面写的android官网上查看),当然上面那段代码对应的就是testLogin测试方法,testLogin方法里所定义的就是要测试的内容。

    1.5K20

    Android 3分钟带你入门开发测试

    ,开发测试分单元测试和UI测试,通过开发测试可以减少开发人员自测时间,提升开发质量。...3、Espresso 自动化测试使用Android的Instrumentation API,这些API的调用在一个与UI线程不同的线程中运行,因此,使用自动化方法测试用户界面会导致严重的并发问题,进而产生不一致不可靠的测试结果...Google对这个问题的解决方案是Espresso,它是一个测试框架,能够使UI测试在多线程环境中安全地运行,并移除了关于编写测试的大部分样板代码。...二、测试应用 AndroidJUnit基于JUnit,使得我们既可以在JVM上运行本地单元测试(local unit tests),也可以在Android设备上进行仪器测试(instrumented tests...于是一个本地单元测试就完成啦,是不是比较简单呢? 2、创建一个Espresso测试 在创建测试之前,我们建立一个待测试的TestActivity.java,添加一下简单的交互。

    1.2K50

    Android单元测试框架Espresso介绍

    大家都知道,测试Android系统原生态APP目前最好的工具使UiAutomation,随着DevOps的普及,我们需要尽早地发现程序中的缺陷,所以单元测试变得非常重要,Android系统推出了Espresso...Espresso与UiAutomation最显著区别在于UiAutomation可以测试一个APP多个界面(Active),而Espresso只能测试一个APP一个界面(Active),另外UiAutomation...可以独立测试APP建立专门的Project,Espresso必须建立在待测APP同一个目录下。...下面我向大家简单介绍一下Espresso。 进行Espresso,首先在待测APP的build.gradle(module.app)中作如下的配置。...同步完成,我们在待测试代码的androidTest建立测试代码,下面是这段Espresso代码。

    1K30

    【Android Gradle 插件】Gradle 扩展属性 ② ( 定义在根目录 build.gradle 中的扩展属性 | 使用 rootProject.扩展属性名访问 | 扩展属性示例 )

    com.android.build.gradle.internal.dsl.TestOptions.UnitTestOptions.html org.gradle.api.tasks.testing.Test 单元测试配置类...build.gradle 构建脚本中 , 则所有的 Module 模块下的 build.gradle 都可以获取到该扩展属性值 ; 在 Module 下的 build.gradle 中可以使用 rootProject...println hello println rootProject.hello1 println rootProject.hello2 } 然后在 Terminal 面板中 , 执行 gradlew...sayHello 命令 , 也就是执行 sayHello 任务 , 输出结果为 : D:\002_Project\002_Android_Learn\Android_UI>gradlew sayHello...:espresso-core:3.4.0' } // 定义局部变量 def hello = 'Hello World!'

    3K20
    领券