如何在 robolectric 测试中添加一些一次性启动代码

How to add some one time initiation code in robolectric tests

如何在 robolectric Android 测试中添加一些一次性启动代码。

我们可以添加一些带有 @Before 注释的方法,这将 运行 在 class 运行 的测试之前,但是我们可以添加一些在任何测试之前执行的代码代码被执行,在 Android robolectric.

解决方案 #1

您可以使用继承或组合。例如。你可以创建 TestBase class:

class TestBase {
   @Before
   protected setUp() {
      // code for all tests
   }
}

然后您的测试可以从中派生出来:

@RunWith(RobolectricTestRunner.class)
class SpecificTest extends TestBase {
   ...
}

解决方案 #2

您还可以创建一些实用程序 class,其中包含方法中的可重复代码,并在测试中的每个 setUp() 方法中调用此方法。然后,您将不需要继承。示例:

class Util {
   private Util() {}
   public static setUp() {
      // code for all tests
   }
}

你的测试可能看起来像这样:

@RunWith(RobolectricTestRunner.class)
class SpecificTest {
   @Before
   public setUp() {
      Util.setUp();
   }
}

使用 JUnit 的 @BeforeClass 注释。

class Test {
    @BeforeClass
    public static void doOnce()
        //Do once before any test case is run.
    }
}