我想測試從Player類調用setter方法的方法randomPlayerStart
。我創建了一個測試用例,用於檢查玩家的boolean
價值。JUnit調用調用另一個方法的方法返回nullPointerException
@Before
public void setUp() throws Exception {
playerA = new Player("Player A", false);
playerB = new Player("Player B", false);
activity = new MainActivity();
activity.randomPlayerStart();
}
@Test
public void testrandomPlayerStart() throws Exception {
assertEquals(true,playerB.isTurn());
}
這是randomPlayerStart
方法。
public void randomPlayerStart() {
Random random = new Random();
boolean player = random.nextBoolean();
if (player) {
playerA.setTurn(true);
} else {
playerB.setTurn(true);
}
}
我試圖overriding
測試文件中的方法並試圖用間諜從框架的Mockito,但沒有奏效。當我使用doNothing而不是doAnswer時,我沒有收到nullException
錯誤,但是這個方法沒有被調用。
@Before
public void setUp() throws Exception {
Turn = false;
playerA = new Player("Player A", false) {
public void setTurn(boolean turn) {
Turn = turn;
}
};
playerB = new Player("Player B", false) {
public void setTurn(boolean turn) {
Turn = turn;
}
};
activity = new MainActivity() {
public void randomPlayerStart() {
Random random = new Random();
boolean player = random.nextBoolean();
if (player) {
playerA.setTurn(true);
} else {
playerB.setTurn(true);
}
}
};
MainActivity spy = Mockito.spy(activity);
doAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
activity.randomPlayerStart();
return null;
}
}).when(spy).randomPlayerStart();
spy.randomPlayerStart();
}
我不知道接下來要做什麼,我沒有測試經驗,因此非常感謝您的任何意見或指導。
'活動=新MainActivity();'不能做到這一點 – njzk2
您的評論解決了我的所有問題 –