Junit/Java为异常创建void的测试方法 [英] Junit/Java create test method for void with exception

查看:105
本文介绍了Junit/Java为异常创建void的测试方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为此空方法创建一个测试方法:

I want to create a test method for this void method:

/**
* @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
}

但是当我运行测试时,它说测试失败并抛出异常. 当我在主程序中运行第一个方法时,它确实可以实现我想要的功能,但是在测试中却失败了……

But when I run the test it says test failed and throws the exception. When I run the first method in my main it does exactly what I want but in the test it fails...

如何为这种方法编写好的测试?

How can I write a good test for this method?

如果有帮助,这是我要测试的方法是否选中的布尔方法.

If it helps this is the boolean method that is checked in the if of the method I want to test.

@Override
public boolean speeltWedstrijd(List<Speler> spelers, Participant participant) {
    return spelers.contains(participant);
}

推荐答案

很抱歉,如果我不了解您的代码意图,但是根据您的代码注释,看来您的测试代码会抛出错误,

Apologies if I didn't understand your code intentions, but based on your code comments, it seems your test code will throw an error as,

wed.isSpeler(); // add speler from first list to second list (to spelers list)

这会将 speler 添加到 spelers 列表

因此speeltWedstrijd将返回包含True的值,而scoreToPar将抛出 GeenSpelerException 异常.

So speeltWedstrijd will return contains True and scoreToPar will throw GeenSpelerException exception.

根据JekBP的建议,您可以使用代码来处理异常,但是根据您的评论,您似乎正在使用Junit 5,它具有更强大的 assertThrows 类似

As suggested by JekBP, you can use code to handle exception, but based on your comment, it seems you are using Junit 5, which has more powerful assertThrows like,

@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);    
    }); 
}

我希望这会有所帮助!

这篇关于Junit/Java为异常创建void的测试方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆