我将 Android Espresso 测试与最新的 Android Studio 2.1.2 一起使用,测试运行正常,但独立测试应用程序似乎没有返回结果以反映到 Android Studio,它显示永远运行测试
问问题
4515 次
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 回答