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

Chr*_*Zou 2 java android unit-testing robolectric

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

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

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

    // other test methods
}
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*scu 6

你想要@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
}
Run Code Online (Sandbox Code Playgroud)