Android Studio - исключение нулевого указателя в модульном тесте - PullRequest
0 голосов
/ 10 апреля 2020

В настоящее время я пытаюсь завершить модульное тестирование в своей игре и столкнулся с исключением из-за нулевого указателя в следующем коде:

Настройка теста:

@RunWith(MockitoJUnitRunner.class)
public class CardMenuTesting {


@Mock
private Game game = Mockito.mock(Game.class);
@Mock
private Input input;
@Mock
private AssetManager assetManager;
@Mock
private Bitmap bitmap;
@Mock
private Paint paint;
@Mock
private CardMenu cardMenu = Mockito.mock(CardMenu.class);
@Mock
private InstructionsScreen instructionsScreen = Mockito.mock(InstructionsScreen.class);
@Mock
GameScreen gameScreen = Mockito.mock(GameScreen.class);

//@Mock
//private CharacterTestScreen characterTestScreen;

@Before
public void setUp() {
    when(game.getAssetManager()).thenReturn(assetManager);
    when(assetManager.getBitmap(any(String.class))).thenReturn(bitmap);
    when(game.getInput()).thenReturn(input);
    when(cardMenu.getGame()).thenReturn(game);
    when(cardMenu.getName()).thenReturn("CardMenu");
    when(instructionsScreen.getGame()).thenReturn(game);
    when(instructionsScreen.getName()).thenReturn("InstructionsScreen");

    cardMenu = new CardMenu(game);


    when(game.getAssetManager()).thenReturn(assetManager);
    when(gameScreen.getName()).thenReturn("Game Screen");

    cardMenu.instructionButton();

}

МЕТОД ТЕСТА:

@Test
public void testPlayButton() {

    CardMenu cardMenu = new CardMenu(game);

    cardMenu.getInstructions().setPushTriggered(true);
    cardMenu.instructionButton();

    assertTrue(game.getScreenManager().getCurrentScreen().getName() == "InstructionsScreen");

}

Метод в классе Card Menu, который я пытаюсь проверить:

public void instructionButton()
{
    InstructionsScreen instructionsScreen = new InstructionsScreen(mGame);

    if (instructions.isPushTriggered()) {
        mGame.getScreenManager().addScreen(instructionsScreen);
    }
}

При запуске модульного теста я получаю исключение NullPonterException по адресу:

mGame.getScreenManager().addScreen(instructionsScreen);

и

cardMenu.instructionButton();

Трассировка стека выглядит следующим образом:

java.lang.NullPointerException
at CardMenu.instructionButton(CardMenu.java:161)
at CardMenuTesting.testPlayButton(CardMenuTesting.java:118)

Я хочу, чтобы модульный тест прошел. Любая помощь приветствуется.

...