天道酬勤,学无止境

android-espresso

Activity never becomes requested state in UI Testing

When implement code to test UI in android using kotlin. this is my code I thinks it 's simple code to test but android studio prevent me due to some problem > I searched a lot for this but no result . I tried a lot of solution but no result also . Thanks . I get this error and activity which I test doesn't start . java.lang.AssertionError: Activity never becomes requested state "[STARTED, RESUMED, DESTROYED, CREATED]" (last lifecycle transition = "PRE_ON_CREATE") at androidx.test.core.app.ActivityScenario.waitForActivityToBecomeAnyOf(ActivityScenario.java:301) at androidx.test.core.app

2022-06-04 15:15:12    分类:问答    java   android   kotlin   junit   android-espresso

Android Espresso doesn't wait for fragments to load

问题 我刚开始使用 Espresso 测试 Android 应用程序,但遇到了一些麻烦。 我有一个带有按钮的 Activity,它以通常的方式替换片段: public void onClick(View v) { final FragmentTransaction t = getFragmentManager().beginTransaction(); t.setCustomAnimations(R.animator.fragment_slide_in_up, 0); t.replace(R.id.fragment_container, LogInFragment.newInstance(), LogInFragment.TAG) .addToBackStack(LogInFragment.TAG); t.commit(); } 在我的测试中,我单击发送新片段的按钮,然后检查新片段是否可见。 onView(withId(R.id.login_btn)) .perform(click()); Thread.sleep(500); onView(withId(R.id.email_input)) .check(matches(isDisplayed())); 如果我从测试中删除Thread.sleep() ,即使我从 Activity 代码中删除了setCustomAnimations

2022-05-16 15:08:15    分类:技术分享    android   android-espresso

Unable to import static android.support.test.espresso.contrib.DrawerMatchers.isOpen;

问题 我正在使用 espresso 来测试我的 android 应用程序。 当我试图为导航抽屉菜单编写测试用例时,我无法导入其中的任何一个 import static android.support.test.espresso.contrib.DrawerActions.closeDrawer; import static android.support.test.espresso.contrib.DrawerActions.openDrawer; import static android.support.test.espresso.contrib.DrawerMatchers.isClosed; import static android.support.test.espresso.contrib.DrawerMatchers.isOpen; 所以请帮助我 回答1 您可能会缺少build.gradle espresso-contrib依赖项,如下所示: androidTestCompile "com.android.support.test.espresso:espresso-core:2.2.2" androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile "com.android

2022-05-15 09:00:24    分类:技术分享    android   android-espresso   android-espresso-recorder

espresso: Assert a Dialog is not shown

问题 如何断言未显示对话框? 目前我有一个测试,它检查对话框中是否不存在文本 onView(withText("Mobile connection")).inRoot(isDialog()).check(doesNotExist()); 但我得到一个 NoMatchingRootException android.support.test.espresso.NoMatchingRootException: Matcher 'is dialog' did not match any of the following roots: [Root{application-window-token=android.view.ViewRootImpl$W@9acefba, window-token=android.view.ViewRootImpl$W@9acefba, has-window-focus=true, layout-params-type=1, layout-params-string=WM.LayoutParams{(0,0)(fillxfill) ty=1 fl=#81810100 wanim=0x1030465 needsMenuKey=2}, decor-view-string=DecorView{id=-1, visibility=VISIBLE, width=768

2022-05-15 07:02:08    分类:技术分享    android   android-espresso   android-testing   android-dialog

Android Espresso IdlingResources and Fragment/Activity Transitions

问题 我有一个托管片段 F1 的活动。 单击按钮后,F1 被另一个片段 F2 替换。 当按下返回按钮时,应用程序会通过退出过渡动画从 F2 回到 F1。 我的 Espresso 测试用例大致如下所示: @Test public void pressingBackRestorePreviousFragment() { // we are in F1 and about to switch to F2 onView(withId(R.id.the_button)).perform(click()); // we are now in F2, pressing back should "return" to F1 Espresso.pressBack(); onView(withText("A specific text in F1")).check(matches(isDisplayed()); } 当测试用例以逐步调试模式运行时,上述测试通过。 但在正常运行模式下,它会失败。 只有当我在onView(withText(__)) ) 之前插入Thread.sleep(___)时,测试才会通过。 我相信更好的技术是将 Thread.sleep() 替换为Espresso IdlingResource ,但我不确定如何将它与视图动画线程合并。 理想情况下,我想将上述测试用例重写为

2022-05-12 13:25:09    分类:技术分享    android   android-fragments   android-transitions   android-espresso

Android Espresso Issue - Dependency conflict

问题 我正在尝试将 espresso 集成到我的应用程序中以进行 ui 测试。 这是我在 Gradle 中的依赖项 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.android.support:design:22.2.1' compile 'com.github.bumptech.glide:okhttp-integration:1.3.1@aar' compile 'com.squareup.okhttp:okhttp:2.0.0' compile 'de.hdodenhof:circleimageview:1.3.0' compile 'com.android.support:cardview-v7:21.+' compile 'com.android.support:recyclerview-v7:21.+' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2' androidTestCompile 'com.android.support.test.espresso

2022-05-11 15:50:11    分类:技术分享    android   android-gradle-plugin   android-espresso

In espresso, how can I test that textview shows only two lines

问题 我有一个 TextView,其中包含以下文本: "line1.\nline2.\n line3" 。 我将 TextView 设置为最后椭圆形并限制为最多两行。 为了测试它是否显示椭圆,我有这个代码 public static final String TEST_BODY = "line1.\nline2.\nline3."; //a setup method is called so that mail_cell_body_preview_field is set to above TEST_BODY //... public void testMessageSnippetIsVisible() { onView(withId(R.id.mail_cell_body_preview_field)).check(matches(isDisplayed())); onView(withId(R.id.mail_cell_body_preview_field)).check(matches(hasEllipsizedText())); onView(withId(R.id.mail_cell_body_preview_field)).check(matches(withText(TEST_BODY))); //Add statement to verify that line3

2022-05-11 12:46:09    分类:技术分享    android   android-espresso

Espresso - withEffectiveVisibility vs isDisplayed

问题 onView(withText("Much Dagger")).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE))); onView(withText("Much Dagger")).check(matches(ViewMatchers.isDisplayed()); 回答1 根据文档 返回匹配将“有效”可见性设置为给定值的 {@link View} 的匹配器。 有效可见性不仅考虑视图的可见性值,还考虑其祖先的可见性值。 在 View.VISIBLE 的情况下,这意味着视图及其所有祖先的可见性 = VISIBLE。 在 GONE 和 INVISIBLE 的情况下,情况正好相反 - 任何 GONE 或 INVISIBLE 父级都会使其所有子级都具有有效的可见性。 笔记: 与名称可能暗示的相反,视图可见性并不直接转化为视图是否显示在屏幕上(为此使用 isDisplayed() )。 例如,视图及其所有祖先的可见性 = VISIBLE,但可能需要滚动到视图才能对用户真正可见。 除非您在测试中专门针对可见性值,否则请使用 isDisplayed。 因此,如果用于验证视图是否可见,请使用isDisplayed() ,但如果用于其他验证,则如果不可见且消失

2022-05-11 12:06:09    分类:技术分享    unit-testing   testing   junit4   android-espresso

ActivityTestRule - how to call code before Application's onCreate

问题 我正在使用带有 ActivityTestRule 的 Espresso 2.1,并且我正在寻找一种在我的应用程序中调用onCreate()之前设置一些静态标志的方法。 我有一些我不想在仪器测试期间调用的初始化代码。 回答1 应用程序onCreate()在 Instrumentation onCreate()之后调用。 对于这种情况,您需要实现一个自定义测试运行程序,它将继承 AndroidJUnitRunner 并使用您的自定义设置覆盖 callApplicationOnCreate()。 public class MyCustomTestRunner extends AndroidJUnitRunner { @Override public void callApplicationOnCreate(Application app) { InstrumentationRegistry.getTargetContext().getSharedPreferences().doMyStuff(); super.callApplicationOnCreate(app); } } 确保更新 build.gradle 中的 defaultConfig 以使用新的 testInstrumentationRunner,如下所示: testInstrumentationRunner "com

2022-05-11 02:28:10    分类:技术分享    android   unit-testing   integration-testing   android-espresso

How to get Spoon to take screenshots for Espresso tests?

问题 我一直在尝试按照有关获取 Spoon 1.1.14 的说明为未通过的 Espresso 测试截屏。 使用自定义 Espresso FailureHandler 进行配置的最佳方法是什么? 回答1 这是我目前的做法: public class MainScreenTest extends BaseStatelessBlackBoxEspressoTest<LaunchActivity> { public MainScreenTest() { super(LaunchActivity.class); } public void testMainScreen() { // Unfortunately this must be explicitly called in each test :-( setUpFailureHandler(); onView(withId(R.id.main_circle)). check(matches(isDisplayed())); } } 我的基本 Espresso 测试类设置了自定义的 FailureHandler(我喜欢使用基类来保存许多其他常见代码): public abstract class BaseStatelessBlackBoxEspressoTest<T extends Activity> extends

2022-05-11 01:47:04    分类:技术分享    android   android-espresso   spoon