使用 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
}
我正在使用 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
}