- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的应用实现自动化测试。
我在 View 中有滑动抽屉,触摸时会打开,里面是一个按钮。我想做的是触摸滑动抽屉将其打开,触摸里面的按钮并再次触摸它关闭滑动抽屉。
这是我的测试代码(ActivityInstrumentationTestCase2)
ToggleButton insideBtn = (ToggleButton) mActivity.findViewById(R.id.sliding_btn);
Button drawerBtn = (Button) mActivity.findViewById(R.id.drawer_btn);
TouchUtils.tapView(this,drawerBtn);
TouchUtils.tapView(this, insideBtn);
TouchUtils.tapView(this, drawerBtn);
...some assertion ...
我发现这段代码有时有效,有时无效。问题是触摸后抽屉没有打开,导致无法触摸 insideBtn。
所以我尝试了这段代码:
ToggleButton insideBtn = (ToggleButton) mActivity.findViewById(R.id.sliding_btn);
Button drawerBtn = (Button) mActivity.findViewById(R.id.drawer_btn);
SlidingDrawer drawer = (SlidingDrawer) mActivity.findViewById(R.id.drawer);
while(!drawer.isOpened()) {
TouchUtils.tapView(this,drawerBtn);
}
TouchUtils.tapView(this, insideBtn);
TouchUtils.tapView(this, drawerBtn);
...some assertion ...
但结果是,有时当测试工作时,它会在第一次工作,所以不需要循环。但是当它不工作时,循环会一直工作到无穷大——没有触摸会导致抽屉被打开。
您对如何编写此测试以可靠地工作有任何想法吗?
最佳答案
我找到了解决方案。错误是错误选择了用于打开 SlidingDrawer 的事件。
Android 文档说 SlidingDrawer 是一个组件由两个 subview 组成: handle ,用户拖动...
因此需要使用 TouchUtils.dragView() 方法来代替 TouchUtils.tapView()
这是一个工作示例:
ToggleButton insideBtn = (ToggleButton) mActivity.findViewById(R.id.sliding_btn);
Button drawerBtn = (Button) mActivity.findViewById(R.id.drawer_btn);
TouchUtils.dragViewToTop(this,drawerBtn);
TouchUtils.tapView(this, insideBtn);
TouchUtils.dragViewToBottom(this,mActivity,drawerBtn);
...Some assertion...
关于android - TouchUtils.clickView() 在单元测试中不适用于 SlidingDrawer 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9742044/
我正在尝试为我的应用实现自动化测试。 我在 View 中有滑动抽屉,触摸时会打开,里面是一个按钮。我想做的是触摸滑动抽屉将其打开,触摸里面的按钮并再次触摸它关闭滑动抽屉。 这是我的测试代码(Activ
我正在使用 ActivityInstrumentationTestCase2 为我的应用编写集成测试,我正在测试按钮是否正确地增加了我的 UI 中的计数器。 基本测试只是获取按钮点击前后显示在 Tex
我是一名优秀的程序员,十分优秀!