6

我将 Android Espresso 测试与最新的 Android Studio 2.1.2 一起使用,测试运行正常,但独立测试应用程序似乎没有返回结果以反映到 Android Studio,它显示永远运行测试

4

4 回答 4

7

我意识到这是一个老问题,但我只是遇到了这个问题,没有看到任何其他有同样问题的搜索结果。

就我而言,这是由于被测代码有堆栈溢出异常引起的,似乎测试运行程序无法处理。我只能通过查看“Android Monitor”并查看 logcat 来弄清楚。

因此,如果您到达 AS 永远处于“运行测试”状态的地步,您可能希望在 logcat 中查找测试运行程序无法处理的异常。

于 2017-03-28T17:48:04.540 回答
1

如果存在,您必须尝试从 build.gradle 文件中删除 testCoverageEnabled 选项。可能重复的 Gradle 构建工具长用于 android 测试

于 2017-09-13T09:41:36.320 回答
0

万一这对任何人都有帮助。就我而言,我在执行后台任务后错误地设置了空闲状态(false 而不是 true),所以 espresso 一直认为它是空闲的。

于 2018-11-10T08:13:19.820 回答
0

您可以像这样添加退出测试类,并在最后将其包含在您的测试套件或执行程序中

import android.os.Looper;

import androidx.test.rule.ActivityTestRule;
import androidx.test.runner.AndroidJUnit4;

import org.junit.FixMethodOrder;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;

import java.io.IOException;

import static androidx.test.InstrumentationRegistry.getInstrumentation;

@RunWith(AndroidJUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ExitTests {

    @Rule
    public ActivityTestRule<MainActivity> myActivityTestRule =
            new ActivityTestRule<>(MainActivity.class, false, true);

    public void init(){
        getInstrumentation().waitForIdleSync();
        if(Looper.myLooper() == null)
            Looper.prepare();
    }


    @Test
    public void Exit() throws InterruptedException, IOException {
        Runtime.getRuntime().exec(new String[] {"am", "force-stop", "com.package.name"});
    }
}

这是测试套件

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({ABC.class, ExitTests.class})
public class TestExecutionOrder {

}
于 2019-12-03T08:16:45.643 回答