Articles of ui testing

使用Espresso和RxJava测试无尽的滚动RecyclerView

我有RecyclerView无尽的滚动。 因此,当用户到达列表中的last – 2位置时,我呼叫服务器以获取更多数据,并且在通话期间,我再添加一个项目 – 进度一个。 现在,我正在尝试用Espresso编写体面的UI测试,它将检查当前无限滚动是否正常工作: @Test public void checkIfProgressShown() { InstaFeed feed = TestDataFactory.makeInstaFeed(20); InstaFeed oldFeed = TestDataFactory.makeInstaFeed(20); when(mockDataManager.getFeedItemsFromServer()).thenReturn(Observable.just(feed.getInstaItems())); when(mockDataManager.getOldFeedItemsFromServer()).thenReturn(Observable.just(oldFeed.getInstaItems()) .delay(2, TimeUnit.SECONDS)); instaActivityActivityTestRule.launchActivity(null); int position = 0; for (InstaItem item : feed.getInstaItems()) { onView(withId(R.id.recycler_view)) .perform(RecyclerViewActions.scrollToPosition(position)); onView(withText(item.getLocation().getName())) .check(matches(isDisplayed())); // Line of crash position++; } onView(withId(R.id.progress)) .check(matches(isDisplayed())); } 所以基本上说,我试图延迟Observable的响应,显示新的一批项目,以便Espresso可以向下滚动到最后一项并使我的progress项可见。 问题在于测试只是堆栈,从UI的角度看它看起来像: 不要混淆这里没有进度条 – 在设备上禁用animation,所以没关系。 最后,小项是有进展的项目 60秒后它崩溃了 […]

如何使用React Native的Espresso UI测试?

我正在尝试在我的React Native Android应用程序上使用Espresso进行一些UI测试,以使用Fastlane的Screengrab。 我已按照本教程在现有应用程序中集成React Native以便能够编写测试。 但是当我开始编写UI测试时,我无法find要编写的内容以及如何定位组件并执行单击操作。 我find了这篇文章,其中有人举例说明如何为React Native编写Espresso Test,但它对我不起作用…我的组件都没有设置资源ID,所以我不知道如何执行某些操作我的应用程序。 如果有人可以帮我在React Native应用程序上用Espresso编写UI测试,或者给我另一个解决方案来获取我的Android应用程序的自动截图,那将是非常棒的。 如果您有任何疑问,请告诉我。

如何旋转活动,我的意思是:使用Espresso改变屏幕方向?

我已经决定使用Google的Espresso进行应用程序测试的测试标准之一是: 测试应在屏幕方向旋转后保持活动状态 使用Espresso时如何旋转屏幕? 我尝试了以下Robotium代码(是的,我在我的Espresso测试中放置了Robotium代码,所以起诉我) solo.setActivityOrientation(solo.LANDSCAPE); solo.setActivityOrientation(solo.PORTRAIT); 但是当我在Espresso测试中运行它时,它会崩溃应用程序。 有没有办法做到这一点? 在此先感谢您的帮助

在运行测试之前,android espresso登录一次

我一直试图通过测试覆盖我的Android应用程序,并且最近开始使用espresso 。 到目前为止,它印象深刻。 但是,我的应用程序的大部分function都要求用户登录。由于所有测试都是独立的,因此需要为每个测试注册一个新用户。 这很好,但是每次测试所需的时间都因此而大大增加。 我试图find一种方法在类(测试)中注册一次用户,然后使用相同的用户帐户来执行该类中的所有测试。 我能够做到这一点的一种方法是实际上只有一个测试( @Test )方法按我想要的顺序运行所有其他测试。 然而,这是一种全有或全无的方法,因为gradle cAT任务仅在结束时输出结果一次,而不提供有关可能已通过/失败的中间测试的信息。 我也尝试了@BeforeClass方法但是没有工作(没有我使用过它的类的gradle输出,即使使用调试选项,它似乎花了很长时间才进入下一类测试)。 是否有更好的方法在课程开始时注册用户一次,然后在测试结束时注销一次? 任何帮助赞赏。

Espresso测试错误:AppNotIdleException

我关闭了开发者选项的所有animation。 但是当我尝试点击其中一个按钮时,我仍然会遇到此exception。 我的应用程序确实是活跃的,并没有完全闲置,但我无法改变它。 android.support.test.espresso.AppNotIdleException: Looped for 6930 iterations over 60 SECONDS. The following Idle Conditions failed . at dalvik.system.VMStack.getThreadStackTrace(Native Method) at java.lang.Thread.getStackTrace(Thread.java:580) at android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:92) at android.support.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:56) at android.support.test.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:184) at android.support.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:115) at android.support.test.espresso.ViewInteraction.perform(ViewInteraction.java:87)

使用Espresso测试ViewPager。 如何对项目的按钮执行操作?

我有一个ViewPager项目只包含一张图片和一个按钮。 我无法与项目(页面)的UI成功交互,因为除了显示的图片之外,没有什么可以区分(从UI的角度来看) ViewPager所有项目。 我试图只选择一个有位置的项目: onData(is(instanceOf(ItemClass.class))) .atPosition(0) .onChildView(withId(R.id.button)) .perform(click()); 造成: NoMatchingViewException:层次结构中找不到匹配的视图:可从类中分配:class android.widget.AdapterView 如何使用Espresso访问和测试ViewPager项目?

是否有可能使用espresso进行截图并testing像素值?

我开始使用espresso,并编写了一些简单的UItesting来点击button,input文本并检查是否一切都在那里应该是。 现在我想要截图并testing一些像素值,但是我找不到这样做的方法。 有没有人有任何build议? 用浓咖啡甚至可以吗?

Android Espresso ListView点击项目

我有ListView与图片和文字。 当我尝试点击项目,我得到错误 android.support.test.espresso.AmbiguousViewMatcherException: 'with id: com.cifrasoft.telefm:id/cardsGridView' matches multiple views in the hierarchy. Problem views are marked with '****MATCHES****' below. 我使用下面的代码: onData(hasToString(startsWith("Item Text"))) .inAdapterView(withId(R.id.cardsGridView)) .perform(click()); 我可以点击ListView使用Adapter位置,没有匹配或startWith ?

意式咖啡dynamic旋转器testing

我试图testing一个dynamic生成的微调 。 我可以点击微调,但是我需要从列表中select一个给定的文本显示的选项(我从hierarchyviewer发现一个PopupWindow显示,但无法获得所需的文本是离屏) 。 微调器使用自定义对象的ArrayAdapter(下面的代码), public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Spinner mySpinner = (Spinner) findViewById(R.id.my_spinner); List<MyValue> list = Arrays.asList( new MyValue("One", "1"), new MyValue("Two", "2"), new MyValue("Three", "3"), new MyValue("Four", "4"), new MyValue("Five", "5"), new MyValue("Six", "6"), new MyValue("Seven", "7"), new MyValue("Eight", "8"), new MyValue("Nine", "9"), […]

咖啡:如何做自定义滑动,例如swipeTop或swipeBottom

到目前为止我们可以做到: swipeLeft swipeRight swipeUp 刷下 我们如何swipeTop(一直到顶部)或swipeBottom(一直到底部)是expresso。 请给我一个例子,如果这些方法已经存在。