Pea*_*ode 7 android ui-testing android-espresso
我正在尝试使用espresso框架为Android APP编写一些UI测试.
现在我只是检查启动画面上是否存在所有元素,然后我尝试单击登录按钮.
单击该按钮时,测试失败,因为我似乎无法理解为什么会发生错误.
我的测试代码是
@RunWith(AndroidJUnit4.class)
@SmallTest
public class WelcomeTest {
@Rule
public ActivityTestRule<Welcome> mActivityRule = new ActivityTestRule<>(
Welcome.class);
@Test
public void elements_present() {
// Check login
onView(withId(R.id.wv_login)).check(matches(isDisplayed()));
// Check signup
onView(withId(R.id.wv_signup)).check(matches(isDisplayed()));
// Check video
onView(withId(R.id.videoView)).check(matches(isDisplayed()));
// Check swipe right
onView(withId(R.id.videoView)).perform(swipeRight());
// Check swipe left
onView(withId(R.id.videoView)).perform(swipeLeft());
}
@Test
public void tap_login() {
// Tap login button
onView(withId(R.id.wv_login)).perform(click());
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
引发者:java.lang.RuntimeException:将不执行操作,因为目标视图与以下一个或多个约束不匹配:至少90%的视图区域显示给用户.
这是什么意思,这是由我的测试方法引起的还是代码中的错误?该应用程序似乎在我的设备上工作得很好.
PS:我已经禁用了espresso文件建议的动画
pio*_*543 15
引发者:java.lang.RuntimeException:将不执行操作,因为目标视图与以下一个或多个约束不匹配:至少90%的视图区域显示给用户.
当任何预期的视图未完全可见时,我会发生这种情况.默认情况下,Espresso会查找在设备屏幕上完全可见的元素.
您的实际设备屏幕似乎没有显示您的登录活动xml文件的完整内容.
ScrollView或ListView?它可能有所帮助:
onView(withId(R.id.wv_login))
.perform(scrollTo(), click());
Run Code Online (Sandbox Code Playgroud)
我的问题仍然会发生,请你添加你的问题xml或截图.我会解决它;-)
注意:要检查某些内容是否完全可见(这意味着超过90%),您可以使用
Run Code Online (Sandbox Code Playgroud)onView(withId(R.id.wv_login)).check(matches(isCompletelyDisplayed()));代替:
Run Code Online (Sandbox Code Playgroud)onView(withId(R.id.wv_login)).check(matches(isDisplayed()));
在更大的屏幕设备上运行测试,检查它是否仍然存在.
如果您有疑问请随意提问
在RuntimeException这里看到java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints: at least 90 percent of the view's area is displayed to the user. 的View确实,实际上来自于被充分展示的失败。然而,@piotrek1543 给出的答案并没有真正找到解决方案,尽管它充满了非常好的信息。
该问题是由竞争条件引起的。您正在尝试打开该视图,并且在它打开期间您正在尝试单击它。如果时机不对,那么ViewEspresso 框架将有不到 90% 的click(). 您可以按照The Espresso Setup Instructions 中的建议禁用动画来解决该问题
Developer Options我自己的测试表明您可以逃脱只需设置Transition Animation Scale到0.0x。可以想象,这是您遇到的竞争条件的完全一致的解决方案。
| 归档时间: |
|
| 查看次数: |
8599 次 |
| 最近记录: |