Espresso IdlingResource 测试延时操作的使用
来源:互联网 发布:关于在义乌外贸数据 编辑:程序博客网 时间:2024/06/01 07:17
在Espresso 自动化测试的使用中已经把一些基本的测试使用方法告诉大家了,单是数据加载之类的延时操作却没有详细说明,这篇文介绍下Espresso 延时操作的使用
之前有在谷歌搜索相关资料,确实有不少解说这个的,但多少都验证了是有问题的,只有官方给出的列子是OK的,因此我们就以官方的列子为依据来解说
库的引用
在使用之前,我们需要引入对应的库,由于耗时需要在项目中使用,所以要使用compile,而非androidTestCompile
compile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2'
IdlingResource 的使用
- #### IdlingResource本身是个接口,代码如下
public interface IdlingResource { //用于日志显示的名字,可随意取 public String getName(); //是否是空闲状态 public boolean isIdleNow(); //注册变成空闲的回调 public void registerIdleTransitionCallback(ResourceCallback callback); //回调接口 public interface ResourceCallback { public void onTransitionToIdle(); }}
- #### 我们需要实现这个接口
SimpleIdlingResource
public class SimpleIdlingResource implements IdlingResource { @Nullable private volatile ResourceCallback mCallback; // Idleness is controlled with this boolean. private AtomicBoolean mIsIdleNow = new AtomicBoolean(true); @Override public String getName() { return this.getClass().getName(); } @Override public boolean isIdleNow() { return mIsIdleNow.get(); } @Override public void registerIdleTransitionCallback(ResourceCallback callback) { mCallback = callback; } /** * Sets the new idle state, if isIdleNow is true, it pings the {@link ResourceCallback}. * @param isIdleNow false if there are pending operations, true if idle. * 我们只需要在耗时完成后,调用次方法,即可执行耗时后的操作 */ public void setIdleState(boolean isIdleNow) { mIsIdleNow.set(isIdleNow); if (isIdleNow && mCallback != null) { mCallback.onTransitionToIdle(); } }}
- #### 耗时操作在代码中的使用
TestActivity
public class TestActivity extends Activity{ private SimpleIdlingResource mIdlingResource; private TextView content; private Button getDataBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); content = (TextView)findViewById(R.id.content); getDataBtn = (Button)findViewById(R.id.getdata); getDataBtn.setOnClickListener(new OnClickListener{ @Override void onClick(){ loadData(); } }) } private void loadData() { //耗时操作开始,设置空闲状态为false,阻塞测试线程 mIdlingResource.setIdleState(false); loadData(new Callback{ @Override void onCall(Data data){ content.setText("finish data"); //耗时操作结束,设置空闲状态为true,放开测试线程 mIdlingResource.setIdleState(true); } }) //试了一下,去除@VisibleForTesting这个注解,不妨碍Test调用,就把他当成测试标志吧 @VisibleForTesting public IdlingResource getIdlingResource() { if(mIdlingResource == null) mIdlingResource = new SimpleIdlingResource(); return mIdlingResource; }}
- #### 在测试中的使用
@RunWith(AndroidJUnit4.class)public class IdlingTest { @Rule public ActivityTestRule<TestActivity> mActivityRule = new ActivityTestRule<>(TestActivity.class); private IdlingResource mIdlingResource; @Before public void registerIdlingResource(){ mIdlingResource = mActivityRule.getActivity().getIdlingResource(); Espresso.registerIdlingResources(mIdlingResource); } @Test pubic void getData(){ //执行点击事件,进入耗时操作 onView(withId(R.id.getdata)).perform(click()); //验证 onView(withId(R.id.content)).check(matchers(withText("finish data"))); } @After public void unregisterIdlingResource(){ if(mIdlingResource != null) Espresso.unregisterIdlingResources(mIdlingResource); }}
这是本人已官方列子为依据总结的IdlingResource的使用,重要点都在代码中注释了,如有问题,请留言
0 0
- Espresso IdlingResource 测试延时操作的使用
- Espresso自动化测试(十一) - IdlingResource
- (4.5.5.6)Espresso的进阶: IdlingResource
- Espresso 自动化测试的使用
- 使用Espresso写测试案例
- Espresso 自动化测试(五)- onData() 的使用
- Espresso 自动化测试 (六) - onData()的使用
- Espresso 自动化测试(十二) -recyclerView 以及 viewPager的使用
- 尝试使用espresso实现Android的测试驱动开发
- Espresso 不依赖源代码的测试
- 关于延时操作的使用
- Espresso自动化测试(十三)- UiAutomator2与Espresso的结合
- 【译】使用Espresso进行UI测试
- android studio使用espresso做自动化测试
- 使用Espresso Test Recorder编写Android测试
- Android自动化测试--Espresso框架使用
- Android UI测试之Espresso使用
- [译] 使用 Espresso 隔离测试视图
- 继承
- HDU 3523 Image copy detection(KM)
- Espresso 自动化测试的使用
- TCP的交互数据流和成块数据流
- Matlab subs函数的用法
- Espresso IdlingResource 测试延时操作的使用
- 从老董身上学到的
- 速卖通如何快速挖掘关键词和查询商品的排名
- 微信小程序挑战APP胜算多少 要打谁的饭碗?
- web 列表切换
- Android中AlarmManager的几个重要方法详解
- Tomcat IP访问限制配置
- MySQL的Master-Slave复制配置步骤
- EventBus的使用