Google最近发布了Android测试支持库1.0。阅读overview后,我对Android Test Orchestrator感到困惑。
它说
通常,AndroidJUnitRunner在同一个检测过程中运行所有测试,这可能会导致许多问题。
您能解释一下使用相同的仪器流程会导致哪些类型的问题?
如果一个测试崩溃,它会阻止测试套件的其余部分运行
根据我的经验,一次测试崩溃不会阻止其他测试用例运行。请指出我在这里误解的内容?
来自Android Testing Orchestrator developer guide,
为了完整性,Android Test Orchestrator会在每次测试后运行pm。
所以Android Test Orchestrator会在每次测试后运行 pm clear [test_package_name] ,对吗?
通过我的测试,每次测试后都不会执行 pm clear [app_package_name] 。这意味着将不会清除被测应用程序的数据。因此,测试用例可能仍然存在彼此依赖关系。例如:
总的来说,经过一些试验,我没有发现Android Test Orchestrator的任何优势。有人可以帮助解决我的困惑吗?感谢。
答案 0 :(得分:11)
在研究了这个问题后,我可以提供以下答案:
通常,AndroidJUnitRunner在同一个检测过程中运行所有测试,这可能会导致许多问题。
如上所述,AndroidJUnitRunner在相同的检测过程中运行,因此基本上您的测试运行状态为满,如果您的测试对进程状态有某种依赖性,这可能会造成严重破坏。在Android测试编排器中,每个测试都在自己的进程中运行,因此依赖性不是问题。
如果一个测试崩溃,它会阻止测试套件的其余部分运行
这里遇到的崩溃是流程崩溃,而不是活动/应用程序崩溃。您可以通过插入一个测试System.exit(0);
来测试这一点。通常,这会停止整个测试运行,而在Android测试协调器中,测试会按预期继续进行。
为了完整性,Android Test Orchestrator会在每次测试后运行pm。
这是谷歌的疏忽,已经从official documentation收回,可以观察here。
基本上,使用Android测试协调器的优势在于每个测试的独立过程,这可以提高稳定性并确保完全执行测试。
答案 1 :(得分:0)
Android Test Orchestrator是一种工具,可让您在自己的Instrumentation调用中运行每个应用程序的测试。 这意味着每个测试(用@Test注释的方法)将在AndroidJUnitRunner的单独实例上运行。
它可以解决什么问题? 在处理UI测试时,我们发现了在CI或本地运行时不时出现的2个主要问题:
答案 2 :(得分:0)
协调器可以防止崩溃以中断整个测试,例如。本机崩溃。 但这可能会减慢测试速度