使用JUnit规则测试预期的异常
這篇文章展示了如何使用JUnit測(cè)試預(yù)期的異常。 讓我們從我們要測(cè)試的以下類開始:
在上面的示例中,如果人員的年齡不大于零,則Person構(gòu)造函數(shù)將引發(fā)IllegalArgumentException 。 有多種方法可以測(cè)試此行為:
這是我最喜歡的方法。 ExpectedException規(guī)則允許您在測(cè)試中指定期望的異常,甚至是異常消息。 如下所示:
import static org.hamcrest.Matchers.*; import static org.junit.Assert.*;import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException;public class PersonTest {@Rulepublic ExpectedException exception = ExpectedException.none();@Testpublic void testExpectedException() {exception.expect(IllegalArgumentException.class);exception.expectMessage(containsString('Invalid age'));new Person('Joe', -1);} }如下面的代碼片段所示,您可以在@Test批注中指定預(yù)期的異常。 僅當(dāng)test方法拋出指定類的異常時(shí),測(cè)試才會(huì)通過(guò)。 不幸的是,您無(wú)法使用這種方法測(cè)試異常消息 。
@Test(expected = IllegalArgumentException.class) public void testExpectedException2() {new Person('Joe', -1); }在引入注釋和規(guī)則之前,這是舊版本的JUnit使用的“傳統(tǒng)”方法。 將您的代碼包含在try-catch子句中,并測(cè)試是否引發(fā)了異常。 如果未引發(fā)異常,請(qǐng)不要忘記使測(cè)試失敗!
@Test public void testExpectedException3() {try {new Person('Joe', -1);fail('Should have thrown an IllegalArgumentException because age is invalid!');} catch (IllegalArgumentException e) {assertThat(e.getMessage(), containsString('Invalid age'));} }參考: fahd.blog博客上的JCG合作伙伴 Fahd Shariff 用JUnit規(guī)則測(cè)試了預(yù)期的異常 。
翻譯自: https://www.javacodegeeks.com/2013/02/testing-expected-exceptions-with-junit-rules.html
總結(jié)
以上是生活随笔為你收集整理的使用JUnit规则测试预期的异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 黄腔是指什么 黄腔是指什么意思
- 下一篇: JavaFX:太空侵略者在175 LOC