相关疑难解决方法(0)

Espresso:Thread.sleep();

Espresso声称没有必要Thread.sleep();,但我的代码不起作用,除非我包含它.我正在连接到IP.连接时,会显示进度对话框.我需要sleep等待对话框解散.这是我使用它的测试片段:

    IP.enterIP(); // fills out an IP dialog (this is done with espresso)

    //progress dialog is now shown
    Thread.sleep(1500);

    onView(withId(R.id.button).perform(click());
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用使用此代码,Thread.sleep();但它说不R.id.Button存在.我能让它发挥作用的唯一方法就是睡觉.

此外,我尝试用Thread.sleep();类似的东西替换,getInstrumentation().waitForIdleSync();但仍然没有运气.

这是唯一的方法吗?或者我错过了什么?

提前致谢.

testing android android-espresso

91
推荐指数
6
解决办法
6万
查看次数

在android浓咖啡检查吐司消息

有谁知道如何在android浓缩咖啡中测试Toast消息的外观?在机器人中它很容易和我使用,但开始在浓缩咖啡工作,但没有得到确切的命令.

android toast android-espresso

65
推荐指数
8
解决办法
3万
查看次数

Espresso和postDelayed

我有一个使用postDelayed调用的活动:

public class SplashActivity extends Activity {
    private Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(...);
        handler.postDelayed(new Runnable() { 
            public void run() { finish(); }
        }, 3000L);
    }
 }
Run Code Online (Sandbox Code Playgroud)

这在app启动时运行,我需要导航它和我的登录屏幕.但是,UIController的loopMainThreadUntilIdle似乎并未将处理程序中的基础MessageQueue考虑在内.因此,当队列中仍有消息时,此操作立即结束.

onView(withId(R.id.splash_screen)).perform(new ViewAction() {
    @Override
    public Matcher<View> getConstraints() {
        return isAssignableFrom(View.class);
    }

    @Override
    public String getDescription() {
        return "";
    }

    @Override
    public void perform(final UiController uiController, final View view) {
        uiController.loopMainThreadUntilIdle();
    }
});
Run Code Online (Sandbox Code Playgroud)

在队列耗尽之前,我一直无法弄清楚如何阻止.Android本身阻止我做很多我想尝试的事情(比如扩展Handler并覆盖postDelayed方法等等)

任何人对如何处理postDelayed有任何建议?

我宁愿避免使用uiController.loopMainThreadForAtLeast,这看起来很hacky(就像Thread.sleep一样)

android android-espresso

11
推荐指数
1
解决办法
2629
查看次数

浓咖啡检查是否显示了吐司(一个在另一个之上)

我在检查是否使用浓缩咖啡显示吐司时遇到问题。我正在上课:

       import android.os.IBinder;
    import android.support.test.espresso.Root;
    import android.view.WindowManager;
    import org.hamcrest.Description;
    import org.hamcrest.TypeSafeMatcher;

    public class ToastMatcher extends TypeSafeMatcher<Root> {

    @Override
    public void describeTo(Description description) {
        description.appendText("is toast");
    }

    @Override
    public boolean matchesSafely(Root root) {
        int type = root.getWindowLayoutParams().get().type;
        if ((type == WindowManager.LayoutParams.TYPE_TOAST)) {
            IBinder windowToken = root.getDecorView().getWindowToken();
            IBinder appToken = root.getDecorView().getApplicationWindowToken();
            if (windowToken == appToken) {
                // windowToken == appToken means this window isn't contained by any other windows.
                // if it was a window for an activity, it would have TYPE_BASE_APPLICATION. …
Run Code Online (Sandbox Code Playgroud)

testing android toast android-espresso

1
推荐指数
1
解决办法
2173
查看次数

标签 统计

android ×4

android-espresso ×4

testing ×2

toast ×2