Articles of android instrumentation

为Spoon Gradle Plugin设置applicationApk和instrumentationApk

我想设置.apk文件,用于使用SpoonGradlePlugin运行我的测试。 我可以从gradle文件以编程方式设置可用的属性: https://github.com/stanfy/spoon-gradle-plugin/blob/master/src/main/groovy/com/stanfy/spoon/gradle/SpoonExtension.groovy 但我的项目有各种风格和名称,我想测试它们。 通过当前设置,我得到: * What went wrong: A problem was found with the configuration of task ‘:app:spoonDebugAndroidTest’. > File ‘/Users/F1sherKK/Dev/MyApp-Android/app/build/outputs/apk/app-debug.apk’ specified for property ‘applicationApk’ does not exist. 我的构建名称是: app-debug-androidTest-unaligned.apk MyApp-debugA-1.2.3-201.apk MyApp-debugB-1.2.3-201.apk MyApp-debugC-1.2.3-201.apk 这就是为什么我想在gradle代码中设置我的.apk – 或者控制台。 到目前为止我发现Spoon Gradle插件中有可用的字段: https://github.com/stanfy/spoon-gradle-plugin/blob/master/src/main/groovy/com/stanfy/spoon/gradle/SpoonRunTask.groovy 名字: /** Instrumentation APK. */ @InputFile File instrumentationApk /** Application APK. */ @InputFile File applicationApk […]

升级依赖项后无法解析ActivityTestRule。 无法导入ActivityTestRule

我已经编写了很好的工具测试,但现在获取错误无法在将依赖项升级到之后解决ActivityTestRule错误 androidTestImplementation ‘com.android.support.test:runner:1.0.2’ androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.2’ 我正在使用android支持版本27.1.1 它与依赖项工作正常 androidTestImplementation ‘com.android.support.test:runner:1.0.1’ androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.1’

Android检测代码覆盖率报告,包括所有应用程序模块

我有一个包含多个库模块的Android项目。 在应用程序模块中,我有一些测试应用程序主要function的测试测试,我想在运行这些测试时记录代码覆盖率。 运行gradle任务“createDebugCoverageReport”时,会生成coverage报告(coverage.ec文件和html报告),但它显示只覆盖应用程序模块中的类,甚至还使用了库模块中的类。 我还尝试用勺子 – gradle-plugin使用Spoon记录测试覆盖率。 在这种情况下,覆盖率报告仅覆盖应用程序模块中的类。 在运行检测测试时,有没有办法获得所有库模块的代码覆盖率? 我已经在每个模块中添加了以下内容: debug { testCoverageEnabled true }

没有错误Android Studio说“没有find测试”

我正在尝试为我的MainActivity编写一个检测测试。 我按照这里给出的答案。 Android Studio仍无法find任何测试。 我在androidTest文件夹中有ApplicationTest.java类。 这是课程的内容: package com.example.monicamarcus.mymusicplayer import android.app.Activity; import android.test.ActivityInstrumentationTestCase2; import com.example.monicamarcus.mymusicplayer.MainActivity; public class ApplicationTest extends ActivityInstrumentationTestCase2 { public ApplicationTest() { super(MainActivity.class); } public void testNextTrackButton() throws Exception { Activity activity = getActivity(); Button nextButton = (Button) activity.findViewById(R.id.nextTrackBt); activity.runOnUiThread(new Runnable() { @Override public void run() { nextButton.performClick(); assertTrue(currentPosition < songList.size()); }}); activity.finish(); } […]

onTouchEvent通过Instrumentation代码

我想完成以下事项: I have two buttons. When first button is pressed, it will fire onTouchEvent on second button, thus pressing second button. 以下是触发事件的代码摘录: int test1[] = new int[2]; button2.getLocationInWindow(test1); //—>getting coordinates of second button Instrumentation m_Instrumentation = new Instrumentation(); //firing event m_Instrumentation.sendPointerSync(MotionEvent.obtain(android.os.SystemClock.uptimeMillis(),android.os.SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN,test1[0]+10, test1[1]+10, 0)); 注意 :我使用genymotion模拟器。 错误日志 : 07-08 12:47:38.743: E/InputEventReceiver(6849): Exception dispatching input event. 07-08 […]

在Android中的unit testing和仪器测试之间共享资源

既然Google已经添加了实验unit testing支持 ,那么如何在unit testing和仪器测试中共享资源呢? 例如,假设我有一个TestUtils.java类,我想在unit testing和仪器测试中访问它。 如果我将它放在我的src/test/java文件夹中,我的unit testing就可以访问它。 如果我把它放在我的src/androidTest/java文件夹中,我的仪器测试就可以访问它。 如何使它们都可以访问? 我现在看到的唯一解决方案是将它放在src/debug/java ,但是有更好的方法吗?

由于’android.content.res.Resources $ NotFoundException’导致检测运行失败

我尝试在Android Studio 1.5.1中使用espresso 2.2.1运行测试。 当我运行LoginActivityTest时,我收到此错误:当LoginActivity调用MyService.java并且MyService需要整数资源(即R.integer.number_of_days)时,会导致“android.content.res.Resources $ NotFoundException”。 此资源在gradle(版本1.5.0)模块中的R.integer.xml文件中定义。 项目结构: RootFolder/ ├—-projectA/ │ ├—-build.gradle │ ├—-settings.gradle │ └—-src/androidTest/java/…/LoginActivityTest │ └—-src/main/java/…/LoginActivity │ └—-Module/ ├—-krill/ │ └—-build.gradle │ ├—-settings.gradle │ └—-src/main/ | └—-java/service/MyService.java | └—-res/value/integers.xml │ └—-otherModule/ └—-build.gradle 我的考试class: @RunWith(AndroidJUnit4.class) @LargeTest public class LoginActivityTest extends ActivityInstrumentationTestCase2{ @Rule public ActivityTestRule mActivityRule = new ActivityTestRule(LoginActivity.class); public LoginActivityTest() { super(LoginActivity.class); } […]

Android Studio中的Ui Automator 2.0项目

我想在Android Studio中设置一个项目。 但是,我不想要一个Android应用程序,只需要测试项目。 在最新发布的UiAutomator之后 ,我试图设置一个扩展ActivityInstrumentationTestCase2的类,并从那里开始我的测试。 但是,我偶然发现了一件事:我无法弄清楚如何在不将其作为应用程序的情况下创建项目。 创建新项目的选项包括: 启动一个新的Android Studio项目 打开现有项目 导入项目 我做了: 启动一个新项目,为其命名,设置minSDK并选择“No activity” 打开build.gradle(在app下)并添加测试支持库末尾提到的依赖项和检测信息 在src下打开androidTest并更改主文件:更改为ActivityInstrumentationTestCase2,添加setUp和tearDown; 定义RunWith Junit4(如测试支持库中所示 ) 我构建项目(构建成功) – 按下“动作栏”中构建的绿色箭头 我的问题是: 如何在设备中安装? 如何在设备中运行它? 我需要在AndroidManifest中做任何事情吗? 我在正确的地方编辑吗? 我应该在src / main下做什么吗? 我很欣赏安装和运行说明将是如何通过Android Studio和使用命令行(如果你只知道其中一个发布它请它)。 注意:这是我第一次使用Android Studio 提前致谢。 编辑: 现在我可以构建并运行但它告诉我没有运行测试(空测试套件)。 这是我的分数和我的代码。 我的build.graddle如下: apply plugin: ‘com.android.application’ android { compileSdkVersion 22 buildToolsVersion “21.1.2” defaultConfig { applicationId “androidexp.com.ceninhas” minSdkVersion 21 targetSdkVersion […]

androidTest中的活动未被ActivityTestRule启动

我想在测试活动中测试一个片段。 我将TestTragmentActivity与AndroidManifest.xml文件一起添加到androidTest 。 但是当我尝试通过ActivityTestRule使用此活动时,它会出现以下错误: java.lang.RuntimeException: Could not launch activity at android.support.test.runner.MonitoringInstrumentation.startActivitySync(MonitoringInstrumentation.java:371) at android.support.test.rule.ActivityTestRule.launchActivity(ActivityTestRule.java:219) at com.bbm.ui.fragments.StickerPackListFragmentTest.testEmpty(StickerPackListFragmentTest.java:29) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at android.support.test.internal.statement.UiThreadStatement.evaluate(UiThreadStatement.java:55) at android.support.test.rule.ActivityTestRule$ActivityStatement.evaluate(ActivityTestRule.java:270) at org.junit.rules.RunRules.evaluate(RunRules.java:20) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runners.Suite.runChild(Suite.java:128) at […]

等到IdleResource可以看到视图

我正在使用Espresso 2.2编写仪器测试。 流程我想测试: radioButton点击测试 onClick启动对API的请求 每次不同的时间后我收到回复 肯定响应触发在活动中调用的接口方法 onRequestSuccess我在屏幕上创建名为vSetupAmount的其他面板可见 我想在点击radioButton后注册IdleResource,等待vSetupAmount变为可见。 但我不能让它发挥作用。 请告诉我我做错了什么。 我写过这样的IdleResource: public class AmountViewIdlingResource implements IdlingResource { private CountriesAndRatesActivity activity; private ResourceCallback callback; private SetupAmountView amountView; public AmountViewIdlingResource(CountriesAndRatesActivity activity) { this.activity = activity; amountView = (SetupAmountView) this.activity.findViewById(R.id.vSetupAmount); } @Override public String getName() { return “Amount View idling resource”; } @Override public boolean isIdleNow() { […]