我在测试单元中遇到一个奇怪的错误。
public class GameActivityUnitTest {
private static ActivityScenario<GameActivity> scenario;
@BeforeClass
public static void createLogHistory() {
scenario = ActivityScenario.launch(GameActivity.class);
// WHEN
scenario.moveToState(Lifecycle.State.CREATED);
}
@Test
public void testPointsChange() {
scenario.onActivity(activity -> {
activity.increaseCoin();
activity.increaseCoin();
activity.decreaseCoin();
assertTrue(activity.coins == 1);;
});
}
@Test
public void testGamePauseStatus() {
scenario.onActivity(activity -> {
activity.view.getTimerController().pause();
assertTrue(activity.view.getPauseStatus());
activity.view.getTimerController().resume();
assertTrue(activity.coins == 1);;
assertFalse(activity.view.getPauseStatus());
});
}
}
我认为标记为@BeforeClass
的功能由以下所有测试单元共享。
显示的内容显示“未注册任何仪器”错误。
但是,如果我删除@BeforeClass方法,但在每个测试单元中重复该代码。
错误消失。
为什么会这样?
而且我不想每次都重复代码,我该怎么办?
谢谢!
如果要在运行每个测试之前执行一些代码,则应使用@Before
批注(而不是@BeforeClass
)。
这意味着您可以轻松地在createLogHistory()
中启动正在测试的活动(现在应该不是静态的。)>