相关疑难解决方法(0)

控制何时自动化测试结束 - Espresso

我正在测试一个不寻常的情况.我正在使用Espresso来编写我的测试.我知道Espresso和InstrumentationTestCase不是为了做到这一点.

我有一个我在其中一个课程中创​​建的监听器,它会通知我某个值的变化.我在我的测试套件中使用了监听器.

当我从侦听器获取值时,我需要声明值已更改为此类.

我的问题是测试将在我收到监听器的值之前结束.

    private void sendSpeedChanges() {
    setStaticSpeed(new Random().nextInt(10) + 2);
    try {
        runTestOnUiThread(new Runnable() {
            @Override
            public void run() {
                consoleActivity.onSpeedChanged(getStaticSpeed(), false);
            }
        });
    } catch (Throwable throwable) {
        throwable.printStackTrace();
    }

}

private void createSpeedDelegate() {
    EspressoMachineValues.setOnSpeedChangeListener(new EspressoMachineValues.OnSpeedChangeListener() {
        @Override
        public void onSpeedChanged(double speed) {
            //assert speed is correct.
            assertTrue(getStaticSpeed() == speed);
        }
    });

}
Run Code Online (Sandbox Code Playgroud)

这些是我正在使用的两种方法.这createSpeedDelegate()是最开始的电话.然后我打电话sendSpeedChanges.我需要做X次.


注意:

  • 检索信息大约需要200毫秒(平均而言).
  • sendSpeedChanges()在检查了价值之前我无法打电话onSpeedChange()
  • 我无法使用,Thread.sleep();因为监听器在主线程上.

我试过添加一个getInstrumentation().wait(2000);getInstrumentation().waitForIdleSync();很明显,没有工作.

在一个完美的世界里,我会这样做:

   for (int i …
Run Code Online (Sandbox Code Playgroud)

java android android-testing android-espresso

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

标签 统计

android ×1

android-espresso ×1

android-testing ×1

java ×1