我想为此空方法创建一个测试方法:
/**
* @param speler speler die zijn wedstrijdronde heeft afgemaakt
* @param score score van de speler
* @throws GeenSpelerException als de persoon geen speler is
*/
@Override
public void scoreToPar(Speler speler, int score) throws GeenSpelerException {
if (speler.speeltWedstrijd(this.spelers,speler)) //boolean
{
throw new GeenSpelerException();
}
speler.setScore(score); // set score into player
我为此做了测试方法:
@Test
void scoreToParTest() throws GeenSpelerException {
wed.isIngeschreven(speler); // add speler to first list
wed.isSpeler(); // add speler from first list to second list (to spelers list)
wed.scoreToPar(speler, 70);
assertEquals(70, speler.getScore()); // check if the score was set correctly
}
但是当我运行测试时,它说测试失败并抛出异常。 当我在主程序中运行第一个方法时,它确实可以实现我想要的功能,但是在测试中却失败了……
如何为该方法编写好的测试?
如果有帮助,这是我要测试的方法是否选中的布尔方法。
@Override
public boolean speeltWedstrijd(List<Speler> spelers, Participant participant) {
return spelers.contains(participant);
}
答案 0 :(得分:1)
我认为您想在mockito中使用模拟:
@Test
void scoreToParTest() throws GeenSpelerException {
var speler = mock(Speler.class);
wed.scoreToPar(speler, 70);
verify(speler).setScore(70);
}
您确认scoreToPar
在有效地执行了应做的工作:将分数设置为应做的值。
答案 1 :(得分:1)
很抱歉,如果我不了解您的代码意图,但根据您的代码注释,看来您的测试代码将抛出错误,
wed.isSpeler(); // add speler from first list to second list (to spelers list)
这会将 speler 添加到 spelers 列表
因此speeltWedstrijd将返回包含True的值,而scoreToPar将抛出 GeenSpelerException 异常。
根据JekBP的建议,您可以使用代码来处理异常,但是根据您的评论,您似乎正在使用Junit 5,它具有更强大的 assertThrows 类似
@Test
void scoreToParTest()
Assertions.assertThrows(GeenSpelerException.class, () -> {
wed.isIngeschreven(speler); // add speler to first list
wed.isSpeler(); // add speler from first list to second list (to spelers list)
wed.scoreToPar(speler, 70);
});
}
我希望这会有所帮助!
答案 2 :(得分:0)
也许您可以在测试类的测试方法中使用此批注,以便一旦确实抛出了预期的异常GeenSpelerException,它将通过测试。
@Test(expected = GeenSpelerException.class)
void scoreToParTest() throws GeenSpelerException {
wed.isIngeschreven(speler); // add speler to first list
wed.isSpeler(); // add speler from first list to second list (to spelers list)
wed.scoreToPar(speler, 70);
assertEquals(70, speler.getScore()); // check if the score was set correctly
}