Нет зарегистрированных инструментов, ошибки при запуске юнит-тестов - PullRequest
0 голосов
/ 03 мая 2020

Я обнаружил странную ошибку в моем тестовом модуле.

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, но повторяю код в каждом тестовом модуле.

Ошибка исчезает.

Почему это происходит?

И я не хочу, чтобы код повторялся каждый раз, что мне делать?

Спасибо!

1 Ответ

0 голосов
/ 03 мая 2020

Если вы хотите выполнить некоторый код перед каждым тестом, вы должны использовать аннотацию @Before (не @BeforeClass).

Это означает, что вы можете легко запустить тестируемое действие в своем createLogHistory() (которое теперь не должно быть стати c).

...