我想测试从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
您的评论解决了我的所有问题 –