Articles of android instrumentation

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() { […]

解析Android中的LinkedList时的java.lang.AbstractMethodError

我想窥探android中的Linkedlist。 List list = new LinkedList(); List spyData = Mockito.spy(list); spyData.add(“xxxx”); 但是,发生了exception。 java.lang.AbstractMethodError: abstract method “boolean org.mockito.internal.invocation.AbstractAwareMethod.isAbstract()” at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:109) at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:41) at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:93) at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29) at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38) at com.google.dexmaker.mockito.InvocationHandlerAdapter.invoke(InvocationHandlerAdapter.java:49) at LinkedList_Proxy.add(LinkedList_Proxy.generated) at com.app.test.testmethod(mytest.java:202) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1858) libs的依赖关系是 dexmaker-1.2.jar dexmaker-mockito-1.2.jar mockito-core-1.10.19.jar 甚至我将mockito-core-1.10.19.jar更新为mockito-core-2.0.31-beta.jar , 问题依然存在。 但是Mockito.mock(Linkedlist.class)还可以,我对这个问题没有任何想法。 谢谢。

如何在运行Espresso测试时禁用代码中的animation

有没有人设法在运行Espresso测试时通过代码禁用animation? 我一直在尝试按照此网页上的说明(从此处链接): https://code.google.com/p/android-test-kit/wiki/DisablingAnimations 不幸的是它似乎没有工作,因为我一直看到这个权限错误: 04-27 15:48:28.694 303-342/system_process W/PackageManager﹕ Not granting permission android.permission.SET_ANIMATION_SCALE to package com.cookbrite.dev (protectionLevel=50 flags=0x18be46) 我真的希望避免重新配置我的设备/模拟器。 我们经常在本地进行个别测试,如果我必须保持切换设置,它会让我烦恼。 我注意到其他一些开发人员抱怨说这不起作用,所以我可能并不孤单: https://groups.google.com/forum/#!msg/android-test-kit-discuss/TCil7kMQRTM/QK1qCjzM6KQJ