没有注册的仪器,运行单元测试时出错

问题描述 投票:0回答:1

我在测试单元中遇到一个奇怪的错误。

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方法,但在每个测试单元中重复该代码。

错误消失。

为什么会这样?

而且我不想每次都重复代码,我该怎么办?

谢谢!

java android android-espresso android-instrumentation
1个回答
0
投票

如果要在运行每个测试之前执行一些代码,则应使用@Before批注(而不是@BeforeClass)。

这意味着您可以轻松地在createLogHistory()中启动正在测试的活动(现在应该不是静态的。)>

© www.soinside.com 2019 - 2024. All rights reserved.