public void declareWinner()
{
compare and declare winner
if(getLive_player1()==0 && getLive_player2()>0)
{
System.out.println("Player 2 wins with "+getLive_player2()+" cells alive.");
}
else if(getLive_player2()==0 && getLive_player1()>0)
{
System.out.println("Player 1 wins with "+getLive_player1()+" cells alive.");
}
else
{
System.out.println("There is a tie.");
}
}
答案 0 :(得分:1)
嗯,很明显,您的代码中有一些不同的分支,因此您需要实现单元测试,您可以点击if
和else if
语句:
player1 = 0
和player2 > 0
player1 = 0
和player1 > 0
以及您点击else
声明的测试:
player1 > 0
和player2 > 0
足以达到该分支。这至少有三种不同的@Test
方法。
我假设您的问题是确定如何捕获System.out
来电。您可以将out
流更改为指向可以通过编程方式捕获的内容的流。这是通过System.setOut()
:
@Test
public void testSomething() {
ByteArrayOutputStream myOut = new ByteArrayOutputStream();
System.setOut(new PrintStream(myOut));
// do your setup and then execute declareWinner()...
String methodOutput = myOut.toString();
// Use Assert.assertEquals(...) to check methodOutput against expected value...
}
根据我所看到的,你怎么知道两个分数> 0结束了?好像else
语句似乎没有真正关闭所有选项。但话说回来,我不确定你的底层代码在做什么......