英文:
Android Studio - Null pointer exception in Unit test
问题
Setting up Test:
@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 METHOD:
@Test
public void testPlayButton() {
CardMenu cardMenu = new CardMenu(game);
cardMenu.getInstructions().setPushTriggered(true);
cardMenu.instructionButton();
assertTrue(game.getScreenManager().getCurrentScreen().getName().equals("InstructionsScreen"));
}
The method in the Card Menu class I am trying to test:
public void instructionButton()
{
InstructionsScreen instructionsScreen = new InstructionsScreen(mGame);
if (instructions.isPushTriggered()) {
mGame.getScreenManager().addScreen(instructionsScreen);
}
}
When I run the unit test I get a NullPonterException at:
mGame.getScreenManager().addScreen(instructionsScreen);
and
cardMenu.instructionButton();
The stack trace is as follows:
java.lang.NullPointerException
at CardMenu.instructionButton(CardMenu.java:161)
at CardMenuTesting.testPlayButton(CardMenuTesting.java:118)
I want the unit test to pass. Any help appreciated.
英文:
I'm currently trying to complete unit testing on my game and have ran into a null pointer exception in the following code:
Setting up Test:
@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 METHOD:
@Test
public void testPlayButton() {
CardMenu cardMenu = new CardMenu(game);
cardMenu.getInstructions().setPushTriggered(true);
cardMenu.instructionButton();
assertTrue(game.getScreenManager().getCurrentScreen().getName() == "InstructionsScreen");
}
The method in the Card Menu class I am trying to test:
public void instructionButton()
{
InstructionsScreen instructionsScreen = new InstructionsScreen(mGame);
if (instructions.isPushTriggered()) {
mGame.getScreenManager().addScreen(instructionsScreen);
}
}
When I run the unit test I get a NullPonterException at:
mGame.getScreenManager().addScreen(instructionsScreen);
and
cardMenu.instructionButton();
The stack trace is as follows:
java.lang.NullPointerException
at CardMenu.instructionButton(CardMenu.java:161)
at CardMenuTesting.testPlayButton(CardMenuTesting.java:118)
I want the unit test to pass. Any help appreciated.
专注分享java语言的经验与见解,让所有开发者获益!
评论