使用 Robolectric,如何在测试 class 中的所有测试方法之前和之后初始化和完成内容是 运行

Using Robolectric, how to init and finalize stuff before and after all test methods in a test class is ran

我正在使用 Robolectric 进行单元测试。我有一个测试 class 说 MainActivityTest,它有几个测试方法:

@RunWith(...)
@Config(...)
public class MainActivityTest {
    @Test
    public void testMethod1() {
        //...
    }

    @Test
    public void testMethod2() {
        //...
    }

    // other test methods
}

我想在执行任何测试方法之前只执行一次方法(init 方法),在执行所有测试方法之后执行另一个方法。我怎样才能做到这一点? 我知道我可以通过在构造函数中调用init方法来解决第一个问题,但是我该如何解决第二个问题呢? 我知道我可以子 class 我的应用程序 class 并使用该应用程序,但这对我来说有点尴尬,因为我使用的是 AndroidAnnotations 而我正在使用的真实应用程序 class 是最后,我只想在这个测试class中这样做,而不是所有测试class。不知道有没有更好的办法。

你想要 @BeforeClass@AfterClass

请注意,它们注释的方法必须是静态的。

参见:

http://junit.sourceforge.net/javadoc/org/junit/BeforeClass.html http://junit.sourceforge.net/javadoc/org/junit/AfterClass.html

例如:

@BeforeClass
public static void beforeEverything() {
    // runs just once before all tests
}

@Before
public void setup() {
    // runs before every test
} 

@After
public void breakdown() {
    // runs after every test
}

@AfterClass
public static void afterEverything() {
    // runs just once after all the tests
}