Articles of android testing

Espresso意图测试失败

我正在学习使用浓缩咖啡的android仪器测试。 我有一个有抽屉菜单的应用程序,有一个叫做关于的菜单。 我正在测试点击该菜单项和活动内容。 testfunction: @Test public void testNavigationDrawerAboutMenu() { onView(withId(R.id.drawer_layout)) .perform(DrawerActions.open()); //open drawer onView(withText(“About”)).perform(click()); onView(withId(R.id.aboutsptemail)).check(matches(withText(R.string.screen_about_support_email))); onView(withId(R.id.aboutcpright)).check(matches(isDisplayed())); onView(withId(R.id.aboutprivacy)).check(matches(isDisplayed())); onView(withId(R.id.abouttermsconditions)).check(matches(isDisplayed())); onView(withId(R.id.aboutsptemail)).perform(click()); } 现在最后一个textview中嵌入了weblink。 因此,当您点击它时,它会自动在应用程序的Web视图中打开链接(www.support.com)。 我想测试这个function。 所以我试过这个: intended(hasComponent(WebViewActivity.class.getName())); //check if webview called on supportEmail link click 但是此错误跟踪测试失败: java.lang.NullPointerException: Attempt to invoke virtual method ‘android.support.test.espresso.intent.OngoingStubbing android.support.test.espresso.intent.Intents.internalIntending(org.hamcrest.Matcher)’ on a null object reference at android.support.test.espresso.intent.Intents.intending(Intents.java:155) at com.ScanBuy.SmartLabel.NavigationDrawerActivityTests.testNavigationDrawerAboutMenu(NavigationDrawerActivityTests.java:94) at java.lang.reflect.Method.invoke(Native Method) at […]

Android测试模块(Gradle Plugin 1.3)不起作用:“找不到调试类”

我正在尝试设置一个unit testing模块,如android studio博客文章中所述。 但是,执行gradle构建失败告诉我“找不到名为’debug-classes’的配置”。 Debug是它试图构建的targetVariant的名称,但我不明白这里出了什么问题。 这是我的测试模块的gradle文件。 apply plugin: ‘com.android.test’ android { compileSdkVersion 22 buildToolsVersion “22.0.1” targetProjectPath ‘:app’ targetVariant ‘debug’ } 这是描述新测试模块function的博客文章。 http://android-developers.blogspot.com/2015/07/get-your-hands-on-android-studio-13.html 我正在使用Gradle插件v1.3.0

Android alpha测试“找不到项目”

我已经发布了我的alpha测试应用程序,但无法从Play商店下载。 我已打开url“ https://play.google.com/apps/testing/com。* ”并接受成为测试人员,现在它向我显示“您是测试人员”。 但是,当我点击“从Play商店下载”链接时,它会在我的测试设备游戏商店中显示“找不到商品”,并在桌面浏览器中显示“未find请求的URL”。 应用程序已发布状态超过48小时。 App已在所有国家/地区发布。 添加了针对测试人员的Google论坛,我可以在管理测试人员标签中看到该论坛。 测试人员帐户被添加到组中(三重检查) 测试设备只有一个测试人员帐户。 我可以访问应用内购买,这意味着应用程序已正确发布。 Google不再支持草稿模式。 我在stackoverflow中经历了一些类似的post,但没有明确的答案。 对于某些人来说它看起来像是自动解决了,有些人不够幸运。

如何在Android Unit测试中打开控制台输出?

有没有办法在控制台输出中打开测试日志记录? 我知道我们可以查看HTML文件中生成的测试结果并检查那里的标准输出,但我发现它有点不方便。 我知道有一种方法可以使用标准的java插件来做到这一点: test { testLogging { events “passed”, “skipped”, “failed”, “standardOut”, “standardError” } } 但在Android项目中使用它会导致错误: Could not find method test() 当然,应用java插件是不可接受的,因为它与Android插件不兼容。

单击边界/坐标

我知道Espresso可以按照UiAutomator的方式点击边界。 (x和y坐标)我已经阅读了文档,但我似乎无法find它。 任何帮助表示赞赏。 谢谢 编辑 我find了这个链接 ,但没有示例如何使用它,我主要关心的是UiController是或如何使用它。

如何从testing范围中排除Dagger2类

有什么select可以从Android Studio中的testing覆盖率报告中排除Dagger2类

我怎样才能unit testing从活动发起/发送的意图?

如何创buildtesting活动内生成的Intent内容的Android JUnittesting用例? 我有一个包含EditText窗口的Activity,当用户完成input所需数据时,Activity将Intent发送到IntentService,IntentServicelogging数据并继续执行应用程序进程。 这里是我想testing的类,OnEditorActionListener / PasscodeEditorListener被创build为一个单独的类: public class PasscodeActivity extends BaseActivity { EditText m_textEntry = null; PasscodeEditorListener m_passcodeEditorListener = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.passcode_activity); m_passcodeEditorListener = new PasscodeEditorListener(); m_textEntry = (EditText) findViewById(R.id.passcode_activity_edit_text); m_textEntry.setTag(this); m_textEntry.setOnEditorActionListener(m_passcodeEditorListener); } @Override protected void onPause() { super.onPause(); /* * If we're covered for any reason during the […]

使用Espresso进行相机操作UItesting

我需要使用espressotesting项目自动执行我的UItesting以便进行以下操作。 操作: 点击打开我的手机相机的button。 捕获图像,并保存在SD卡存储的图像。 完成后还要在屏幕上更新小图像视图。 应用程序工作正常,但与所有其他操作和类似的上述操作,它成为一个耗时的过程,以手动testing一次又一次。

带有ActionBarActivity的ActivityUnitTestCase的NameNotFoundException

我正在尝试为现有的应用程序编写一些testing。 我想提供一个testing应用程序类的testing,我跟着这里的例子,因为我也使用Dagger的DI。 但是,如果被测活动是一个ActionBarActivity,我得到以下exception: java.lang.IllegalArgumentException: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{mypackage.view.activity/mypackage.view.activity.MyActivity} at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:282) at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:116) at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) at mypackage.view.activity.MyActivity.onCreate(MyActivity.java:68) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158) at mypackage.MyActivityTest.test(MyActivityTest.java:89) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701) Caused by: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{mypackage.view.activity/mypackage.view.activity.MyActivity} at android.app.ApplicationPackageManager.getActivityInfo(ApplicationPackageManager.java:242) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:298) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:279) … 21 more 我的testing类如下所示: public class […]

在设备操作testing期间,“animation师只能在Looper线程上运行”

这是我的testing代码: @RunWith(AndroidJUnit4.class) @SmallTest public class WelcomeActivityTests extends BaseTest { ApplicationController applicationController; @Rule public ActivityTestRule<WelcomeActivity> activityTestRule = new ActivityTestRule<>(WelcomeActivity.class); ArgumentCaptor<Callback> argumentCaptor; @Before @Override public void setUp() { applicationController = (ApplicationController) InstrumentationRegistry.getTargetContext().getApplicationContext(); applicationController.setMockMode(true); argumentCaptor = ArgumentCaptor.forClass(Callback.class); super.setUp(); } @Test public void testLogin() throws InterruptedException { onView(withId(R.id.btnLogInW)).perform(click()); onView(withId(R.id.email)).perform(typeText("good.email@example.com")); onView(withId(R.id.passL)).perform(typeText("strong.password")); onView(withId(R.id.btnLogInL)).perform(click()); User user = new User(); user.first_name = "Fake […]