如何在异常后继续运行Android检测测试?

时间:2016-04-26 09:51:35

标签: android android-testing cucumber-jvm

显然,当检测到的应用程序发生异常时,将停止检测测试运行:

  

测试未能完成。原因:'仪表运行因“异常”而失败。''检查设备logcat以获取详细信息

这是自定义检测运行器中的所需行为还是配置错误?

我使用自定义MonitorinInstrumentation [1]来自动化验收测试。

不幸的是,在一次测试中发生异常时,测试执行被取消。我希望测试套件完成并且只标记失败的测试,就像在JUnit中一样。

在一次测试中发生异常的情况下,是否存在执行(连接)测试而不退出整个测试的一般方法?

  1. https://github.com/cucumber/cucumber-jvm/blob/master/examples/android/android-studio/Cukeulator/app/src/androidTest/java/cucumber/cukeulator/test/Instrumentation.java

3 个答案:

答案 0 :(得分:2)

当出现问题时(例如,您要检查的某些条件),Instrumentation测试会引发异常。您通常可以使用try catch语句(或更改这些检查)来避免某些测试失败。 在这种情况下,有一些东西让Dalvik虚拟机停止了。这通常是由您的应用程序崩溃引起的。尝试仔细检查您的测试流程,以分析是否存在崩溃。 另外,请确保在某些活动中不要在 onDestroy()中使用 System.exit(0),因为这可能会导致您的问题。 我希望能帮助你。

答案 1 :(得分:0)

您可以尝试插入根build.gradle

tasks.withType(Test) {
  ignoreFailures = true
}

根据文件:

  

如果其中一个测试失败,则在任何设备上,构建都将失败。

选中此android testing

答案 2 :(得分:0)

我最近正在寻找解决此问题的方法,并且发现了一些其他人可能认为有用的信息。

输入org.junit.rules.ErrorCollector。自won't work if your instrumentation tests are using deprecated ApplicationTestCase<Application> class以来,在此I only needed the application context期间,我能够使用_input = 'Abba' # _input = 1221 def isPalindrome(_): in_str = str(_).casefold() # Convert number to string + case insensitive for _ in range(int(len(in_str) / 2)): # Loop from 0 till halfway if in_str[_] != in_str[~_]: return False return True print(_input, isPalindrome(_input) and ' is palindrome' or ' is not palindrome') 来解决此问题。

以下是gist I found中的一些示例代码,可帮助您入门:

androidx.test.platform.app.InstrumentationRegistry