[英]Junit/Java create test method for void with exception
我想為這個 void 方法創建一個測試方法:
/**
* @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
}
但是當我運行測試時,它說測試失敗並拋出異常。 當我在我的 main 中運行第一個方法時,它完全符合我的要求,但在測試中它失敗了......
我怎樣才能為這種方法編寫一個好的測試?
如果有幫助,這是在我要測試的方法的 if 中檢查的 boolean 方法。
@Override
public boolean speeltWedstrijd(List<Speler> spelers, Participant participant) {
return spelers.contains(participant);
}
我認為您想像在mockito中那樣使用模擬:
@Test
void scoreToParTest() throws GeenSpelerException {
var speler = mock(Speler.class);
wed.scoreToPar(speler, 70);
verify(speler).setScore(70);
}
您驗證scoreToPar
正在有效地做它應該做的事情:將分數設置為它應該做的值。
抱歉,如果我不理解您的代碼意圖,但根據您的代碼注釋,您的測試代碼似乎會拋出錯誤,
wed.isSpeler(); // add speler from first list to second list (to spelers list)
這會將speler添加到spelers列表
所以 speeltWedstrijd 將返回 contains 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);
});
}
我希望這有幫助!!!
也許你可以在你的測試類的測試方法中使用這個注解,這樣一旦預期的異常 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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.