我想为这个空方法创建一个测试方法:
/**
* @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
}但是当我运行测试时,它说测试失败并抛出异常。当我在主程序中运行第一个方法时,它完全按照我的要求运行,但是在测试中它失败了.
我怎样才能为这个方法写一个好的测试?
如果有帮助,这就是我要测试的方法的If中签入的布尔方法。
@Override
public boolean speeltWedstrijd(List<Speler> spelers, Participant participant) {
return spelers.contains(participant);
}发布于 2020-06-14 15:56:12
抱歉,如果我不理解您的代码意图,但是根据您的代码注释,您的测试代码似乎会抛出一个错误,
wed.isSpeler(); // add speler from first list to second list (to spelers list)它将将拼写器添加到拼写器列表中。
因此,GeenSpelerException将返回speeltWedstrijd包含True,scoreToPar将抛出异常。
正如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);
});
}希望这能帮上忙!
发布于 2020-06-14 12:45:18
我想您想要像在莫基托中一样使用模拟
@Test
void scoreToParTest() throws GeenSpelerException {
var speler = mock(Speler.class);
wed.scoreToPar(speler, 70);
verify(speler).setScore(70);
}您可以验证scoreToPar是否有效地做了它应该做的事情:将分数设置为它应该的值。
发布于 2020-06-14 12:45:04
也许您可以在您的测试类的测试方法中使用这个注释,这样一旦确实抛出了预期的异常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
}https://stackoverflow.com/questions/62372588
复制相似问题