Espresso Test运行两次

时间:2018-11-01 11:50:22

标签: android junit4 android-espresso android-instrumentation

为了进行代码覆盖率和工具测试,我使用了Junit Test Suite来执行命令,因为有一些依赖类。问题是我的测试正在按照junit测试服的顺序执行 BUT 测试正在被执行的两次 ... 每个Junit测试套件的执行一个随机顺序我只需要执行一次Junit测试套件中定义的迭代。

@Suite.SuiteClasses({
        test1.class,
        test2.class,
        test4.class,
        test3.class,
        test8.class,
        test7.class

}) 

尝试以下两种配置后,测试仍在twiee上运行,即按照Test Suite进行1次测试,按随机顺序进行一项

testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'

当我尝试使用以下配置执行时,测试服显示为空

testInstrumentationRunner 'com.xx.xxx.modules.runner.JunitTestSuite'

我在我的测试类文件中使用了以下注释...请注意,我不希望按照类中的方法顺序执行。我已经用过@FixMethodOrder(MethodSorters.NAME_ASCENDING)了。我需要对课程进行同样的操作。即我需要借助课程顺序来执行测试

1 个答案:

答案 0 :(得分:0)

我将基于几个假设进行回答,如果我发现任何错误,请更正原始问题中的答案。

首先,请注意,最好的做法是编写不依赖于运行顺序的测试以确保成功,但是如果不是这样,那么下面的解决方案可能对您有用。

听起来好像发生的事情是该测试作为套件的一部分并单独运行。您可以通过几种方法解决此问题,但是假设所有测试类都在Suite类中,最简单的方法是仅在测试运行器中运行Suite类。如果您是从gradle命令行运行测试,则可以通过传递这样的参数来实现此目的(我假设您的Test Suite类名为'com.xx.xxx.modules.runner.JunitTestSuite'):

-Pandroid.testInstrumentationRunnerArguments.class=com.xx.xxx.modules.runner.JunitTestSuite

如果您不是从gradle命令行运行测试,或者需要运行不在Test Suite中的测试,则可以通过阅读{上的文档来取消测试或找到适合您的解决方案{3}}。