如何使用命令行在Android测试类中传递参数?
我想要一种将命令行参数发送到我的测试类中以运行所有单元测试并从中创建测试覆盖报告的方法. 我使用以下命令来生成测试覆盖报告和传递参数 ./gradlew createDebugCoverageReport -Dparam=input1 及以下是App Gradle文件 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 30 defaultConfig { applicationId "com.example.testcoverageapp" minSdkVersion 27 targetSdkVersion 30 versionCode 1
2 2024-04-04
编程技术问答社区
无法访问includeAndroidResource 它在UnitTestOptions中是私有的。
我正在尝试 kotlin gradle脚本和 android测试. 当我尝试配置Android资源进行测试时,我会收到以下错误: 无法访问包含eandroidResource,它在UnitSestoptions中是私人的. 在Android单元测试中使用 Android资源启用的正确方法是什么? 解决方案 发布了此问题后,我回到了 Android Studio ,并试图看看有什么可自动完成. 我按 Control+Space testOptions.unitTests. 和boom ,有一个名为isIncludeAndroidResources的选项,它是 testoptions in testoptions 类 private includeAndroidResource 然后将其设置为true. 解决方案: testOptions.unitTests.isIncludeAndroidResources = true 课程:尝试编
Gradle。没有找到测试
当我试图通过执行来运行Android测试时: ./gradlew connectedDebugAndroidTest 发生以下错误: com.android.builder.testing.ConnectedDevice > No tests found.[devicename] FAILED No tests found. This usually means that your test classes are not in the form that your test runner expects (e.g. don't inherit from TestCase or lack @Test annotations). :connectedDebugAndroidTest FAILED FAILURE: Build failed with an exception. i 尚未进行任何更改 build.gradle或gradle-wrapper.propert
10 2024-04-04
编程技术问答社区
为androidTest sourceSet配置res srcDirs
我想包括仅用于测试的资源. 我在我的应用模块build.gradle文件中具有以下内容: android { ... sourceSets { androidTest { java.srcDirs = ['src/androidTest/java'] res.srcDirs = ['src/androidTest/res'] } } } java srcdirs路径是正确的,但是如果我尝试从AndroidTest中的RES目录获取资源,则找不到资源. 我如何在AndroidTest目录中获得仅用于测试的资源? 解决方案 事实证明,您不需要从默认build.gradle文件更改任何内容. 诀窍是自动生成的R.java文件在androidTest>中的资源不同. 如果您的主要源集中的某个地方的导入语句看起来如下: import com.m
8 2024-04-04
编程技术问答社区
使用espresso实现安卓自动化,但没有应用程序的源代码
是否不可能使用没有源代码的浓缩咖啡来自动化Android应用. Gradle期望这样的结构: src/main/ src/androidTest/ 但是我想在该应用程序的其他版本上运行这些自动化测试?仅通过安装应用程序并运行测试才可能吗? 这里说这是不可能的: 用Espresso自动化Android APK 解决方案 答案是肯定的,您可以使用不含应用源代码的浓缩咖啡进行自动化测试. 浓缩咖啡基于Android仪器框架,这意味着自动化测试内置在单个测试APK中.此测试APK与普通应用程序APK不同: 仪器在AndroidManifest.xml中注册,一旦安装了测试APK,它将注册到Android系统 必须使用与应用程序APK相同的签名签名测试APK,以便运行自动化测试 测试APK在与应用程序APK 的过程中运行 上面是任何基于仪器的测试框架所具有的唯一要求.因此,源代码没有依赖性. 但是为什么我们发现大多数浓缩咖啡教
6 2024-03-21
编程技术问答社区
来自espresso contrib的openDrawer已被弃用。
浓缩咖啡(com.android.support.test.espresso:espresso-contrib:2.2.1)opendrawer方法已弃用 那我应该如何打开抽屉? 解决方案 这是有关如何使用新open和close方法的示例: onView(withId(R.id.drawer_layout)).perform(DrawerActions.open()); onView(withId(R.id.drawer_layout)).perform(DrawerActions.close()); 其他解决方案 openDrawer的文档建议使用正确的资源ID的open方法并执行ViewAction. . 在匹配视图后,请使用open()与persion一起使用.这个方法将是 在下一个版本中删除. 其他解决方案 您可以尝试一下!这将从工具栏中获取菜单,然后按一下他 onView(allOf(withContentDescript
14 2024-03-21
编程技术问答社区
如何使用espresso从textview中获取文本
我想在线安装中的文本视图中获取文本字符串.浓缩咖啡可以做到吗?如果没有,是否有其他方法可以做到这一点,或者我可以在浓缩咖啡案例中使用Android API?我使用的是API 17 18或更新,浓缩咖啡1.1(应该是最新的.).我对此一无所知.谢谢. 解决方案 基本思想是使用具有内部ViewAction的方法,该方法在其性能方法中检索文本.匿名类只能访问最终字段,因此我们不能让它设置getText()的本地变量,而是使用字符串数组来将字符串从ViewAction中取出. . String getText(final Matcher matcher) { final String[] stringHolder = { null }; onView(matcher).perform(new ViewAction() { @Override public Matcher g
10 2024-03-21
编程技术问答社区
你如何在多个活动中测试一个安卓应用程序?
我们正在构建一个复杂的Android应用程序,该应用程序由许多活动中的许多屏幕和工作流程组成.我们的工作流类似于您在银行的ATM机上看到的工作流,例如,在该过渡到主菜单Activity中有一个Activity可以根据用户的选择过渡到其他活动. 由于我们有很多工作流程,因此我们需要创建跨越多个活动的自动测试,以便我们可以从头到尾测试工作流程.例如,使用ATM示例,我们想输入有效的别针,验证将我们发送到主菜单,选择撤回现金,验证我们在提​​取现金屏幕等上等,并最终发现自己返回主菜单或"登录". 我们已经玩过Android(例如ActivityInstrumentationTestCase2)以及 ,但似乎都无法超越单个Activity的范围进行测试,尽管我们可以在这些单元测试的工具中找到一些实用程序,但它们无法满足我们测试的需求多个活动. 我们开放Xunit框架,脚本,GUI录音机/播放等,并感谢任何建议. 解决方案 我对回答自己的赏金问题有些尴尬,但这是...
8 2024-03-21
编程技术问答社区
Espresso AutoCompleteTextView点击
所以我最近开始在现有的Android项目之一中与浓缩咖啡一起弄乱. 一切都非常体面地进行,直到我在程序中找到AutoCompleteTextView.我似乎不明白如何正确单击"自动完成"列表中的第一件事.实际上,在这种情况下,我什至不确定要使用哪个,onView()或onData(). 解决方案 所以我终于弄清楚了,这要归功于以前的问题: 使用Esperso TextView使用Esperso TextView使用Espresso Tool 病只会发布我的版本,以便将来可能使用它. onData(instanceOf("Whatever your arrayadapter contains".class)).inRoot(RootMatchers.withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView())))).perform(ViewActions.click
24 2024-03-20
编程技术问答社区
在应用程序中运行一个仪器测试并等待结果
我正在开发QA自动化解决方案,该解决方案可以在Android上记录/播放QA测试.关键的业务需求是在播放录制测试时不依赖连接的PC.为此,我试图在没有连接的PC的情况下运行仪器测试. (具体来说,Appium uiautomator2测试). 我当前的方法是试图从我的应用程序中编程运行测试.如果我正常从连接的PC运行测试,则将使用命令adb shell am instrument -w.我尝试从应用程序访问ADB Shell并运行am instrument -w,但这会产生一个错误,我缺少Interact_across_users_full许可. 为了解决这个问题,我正在尝试使用 startInstrumentation .这成功开始了测试.但是,测试立即崩溃.经过进一步调查,我将崩溃追溯到NPE:测试正在尝试检索InstrumentationRegistry.getInstrumentation.getUiAutomation(0),但这返回了null. 如何通过编程
4 2024-03-02
编程技术问答社区
用appium进行安卓UI自动化测试
我只是在几周内就开始进行Android UI自动化测试.我一段时间都尝试使用机器人,现在我想更改为Appium Framework.我的问题是: 我读到Appium是测试WebView应用程序的测试工具.那么另一个不是WebView应用程序的应用程序呢? 我可以从appium上进行基因抗病的测试吗? 我还需要使用Appium(硒或其他工具)安装其他工具? 编辑 当我尝试使用UNE SUDO安装Appium时,我会收到此错误 err!错误:EACCES,UNLINK '/users//appium/node_modules/.bin/instruments-client.js' npm err! {[错误:eacces,unlink '/users//appium/node_modules/.bin/instruments-client.js'] npm err! errno:3, npm err!代码:'eacces', npm err!小路
20 2024-03-02
编程技术问答社区
如何建立一个Appium UI测试的maven项目,以配合Gitlab CI测试Android App?
我现在是一名实习生,是自动化测试的新实习生.我的目标是帮助我的公司为客户端设立CI. 现在,我有一个Maven项目包含几个测试,使用Appium Java-Client Lib,Eclipse IDE,可以在本地运行UI测试.我的下一步是与GitLab Repo(已经由Android Developers创建的)连接我的测试,但我被困在这里.有人可以帮我吗? 请尝试具体: 我应该如何设置.gitlab.yaml? 我们可以在YAML中使用脚本下载Appium和Maven吗? 否则我们可以下载Appium,但是将所有Appium Java-Client Jars导入Main中的Libs? 如果以上任何一个是正确的,如何?如果两者都不是什么,我该怎么办 做? 我应该在该仓库中将测试放在gitlab中?或者我不必 将我的测试放在现有的存储库中.相反,我可以还有一个 并告诉YAML到达哪里?再次,如何? 如果您可以帮助我完成工作流程,将会有所帮助. 就像,当我开发人员查
6 2024-03-02
编程技术问答社区
Espresso测试禁用动画
@Test public void test3_PaySuccessful(){ init(); ViewInteraction amountEditText = onView( allOf(withId(R.id.et_amount), isDisplayed())); amountEditText.perform(replaceText("SGD 0.010"), closeSoftKeyboard()); //, withText("Proceed") ViewInteraction appCompatButton = onView( allOf(withId(R.id.btn_confirm), isDisplayed())); appCompatButton.perform(click()); //, withText("Pay") ViewIn
24 2024-02-26
编程技术问答社区
Androidx ServiceTestule找不到我的服务
公平地说,我不是在测试服务,而是使用服务作为我的测试课程的一部分来测试蓝牙库.因此,我的测试类需要创建一个调用蓝牙库的服务.然后,测试类需要绑定到此服务以执行测试.但是,尝试启动该服务总是会给我以下错误,从而导致nullpointer异常 W/ActivityManager: Unable to start service Intent { cmp=com.example.androidhdpadapter.test/com.lampreynetworks.ahd.oxp.transport.BluetoothTestService } U=0: not found 在此阶段,测试类非常简单: package com.lampreynetworks.ahd.oxp.transport; import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.con
36 2024-02-19
编程技术问答社区
JaCoCo显示0%的覆盖率,甚至所有测试都通过了
我已经在androidTest目录中写了一些测试用例. 我正在使用androidx(testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner") 添加了依赖项: androidTestImplementation 'androidx.test:runner:1.1.0' androidTestImplementation 'androidx.test:rules:1.1.0' 也添加了jacoco作为依赖性. 当我运行createDebugAndroidTestCoverageReport gradle任务时,所有测试用例成功运行,但报道中的覆盖率为0% 我猜那是由于这个错误: v/instrumentationResultparser:错误:无法生成emma/jacoco覆盖范围. v/instrumentrationResultparser:instrumentat
40 2024-02-19
编程技术问答社区
安卓测试协调器不能在安卓X上工作
我最近迁移了我的项目以使用Androidx,并使用以下文档为Gradle上的浓缩咖啡测试配置了测试编排器: https://developer.android.com/培训/测试/Junit-Runner#使用Android-Test-Orchestrator 我有依赖性: androidTestUtil 'androidx.test:orchestrator:1.1.0-beta01' 但是,我的测试均未执行,并且在运行gradle运行以下ADB shell命令时,看起来它们失败了: adb shell 'CLASSPATH=$(pm path android.support.test.services) app_process / \ android.support.test.services.shellexecutor.ShellMain am instrument -w -e \ targetInstrumentation com.exampl
20 2024-02-19
编程技术问答社区
androidx.test.InstrumentationRegistry已被废弃。
切换到AndroidX并接受了弃用:import androidx.test.InstrumentationRegistry. 如果我进行了下一个导入:import androidx.test.platform.app.InstrumentationRegistry 我不能使用getContext(). ex: val context = InstrumentationRegistry.getContext(). in build.gradle: androidTestImplementation 'androidx.test.ext:junit:1.0.0-beta02' androidTestImplementation 'androidx.test:runner:1.1.0-beta02' 解决方案 您可以在大多数情况下使用InstrumentationRegistry.getInstrumentation().getTargetContext() I
10 2024-02-19
编程技术问答社区
使用AndroidX运行工具化测试时,没有发现测试。
我正在尝试在我的Android Project(使用Androidx)中运行标准的示例Instrumented -test,但改为获得"未找到的测试"错误.我已经浏览了其他问题和文档,我敢肯定我已经做对了,但是也许我忽略了任何事情? 这是我的应用程序的build.gradle: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' android { compileSdkVersion 28 defaultConfig { minSdkVersion 24 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test
26 2024-02-19
编程技术问答社区
JUnitTest中MutableLiveData为空
我想编写一个单元测试.因此,我需要MutableLivedata.我从设置非常基本的测试开始,但我无法实例化mutableLiveData对象.当我运行测试时,我总是无效的.我必须嘲笑什么吗?有什么建议么? @RunWith(MockitoJUnitRunner.class) public class DefaultLiveDataTest { private static final int EXPECTED = 5; private final MutableLiveData underTest = new MutableLiveData(); @Test public void exampleTest() { underTest.setValue(EXPECTED); //underTest is Null assertEquals(underTest.getValue().intValue(),
32 2024-02-19
编程技术问答社区
AndroidX.Test ActivityScenario: java.lang.AssertionError: 活动从未成为请求的状态"[RESUMED]"(最后的生命周期转换="STOPPED")。
ActivityScenario是ATSL中的Robolectric和ActivityTestrule中的活动控制器的替代. 从ATSL重构到Androidx测试时,我正在使用此代码在每个浓缩咖啡测试之前开始我的索引. @Before public void launchActivity() { ActivityScenario scenario = ActivityScenario.launch(IndexActivity.class); } 但是,我的测试在80-90%的时间里停滞不前,并丢弃了此错误. java.lang.AsserTionError:活动永远不会成为请求状态" [恢复]"(最后一个生命周期过渡="停止") 试图进行故障排除时,我将上述更改为: @Before public void launchActivity() { ActivityScenario
44 2024-02-19
编程技术问答社区