Java 使用Robolectric,如何在运行测试类中的所有测试方法之前和之后初始化和最终确定内容

Java 使用Robolectric,如何在运行测试类中的所有测试方法之前和之后初始化和最终确定内容,java,android,unit-testing,robolectric,Java,Android,Unit Testing,Robolectric,我正在使用Robolectric进行单元测试。我有一个测试类,比如MainActivityTest,它有几种测试方法: @RunWith(...) @Config(...) public class MainActivityTest { @Test public void testMethod1() { //... } @Test public void testMethod2() { //... } /

我正在使用Robolectric进行单元测试。我有一个测试类,比如MainActivityTest,它有几种测试方法:

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

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

    // other test methods
}
我只想在执行任何测试方法之前执行methodinit方法一次,在执行所有测试方法之后执行另一个方法。我该怎么做? 我知道我可以通过调用构造函数中的init方法来解决第一个问题,但是如何解决第二个问题呢? 我知道我可以对我的应用程序类进行子类化并使用该应用程序,但这对我来说有点尴尬,因为我使用的是AndroidAnnotations,而我使用的真正的应用程序类是final,我只想在这个测试类中这样做,而不是在所有的测试类中这样做。我想知道是否有更好的方法来做到这一点。

你想要@BeforeClass和@AfterClass

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

见:

例如:

@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
}

看看JUnit中的@Before和@After注释@Before和@After注释用于注释将在每个测试方法运行之前或之后运行的方法,而不是所有测试方法都运行一次。你能分享一下你将在这些方法中做什么吗?@Eugen Martynov当然,我想要几个测试方法共享同一个MockWebServer,这样我就不必为每个测试方法启动和关闭服务器。你是指本地web服务器还是来自Robolectric的东西谢谢,这就是我要找的。虽然@BeforeClass和@AfterClass方法必须是静态的,但似乎每个测试方法都有自己的测试类实例,因此静态是有意义的。