得到關於JUnit的的ExpectedException規則的使用問題:如何使用ExpectedException規則在一個測試中測試多個異常?
由於這裏建議:junit ExpectedException Rule 從開始的JUnit 4.7一個可以測試這樣的例外情況(這是好得多則@Test(預期= Exception.class)) :
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testFailuresOfClass() {
Foo foo = new Foo();
exception.expect(Exception.class);
foo.doStuff();
}
現在,我需要一個測試方法測試幾種例外情況和運行下面的測試後,得到了一個綠色條,因此認爲每一個測試通過。
@Test
public void testFailuresOfClass() {
Foo foo = new Foo();
exception.expect(IndexOutOfBoundsException.class);
foo.doStuff();
//this is not tested anymore and if the first passes everything looks fine
exception.expect(NullPointerException.class);
foo.doStuff(null);
exception.expect(MyOwnException.class);
foo.doStuff(null,"");
exception.expect(DomainException.class);
foo.doOtherStuff();
}
但是一段時間後,我意識到,第一檢查通過後TestMethod的是退出。至少可以說這是不明確的。在junit 3這很容易... 所以這裏是我的問題:
如何使用ExpectedException規則在一個測試中測試幾個異常?
您仍然可以使用Junit 3的方式,但不可能使用@Test(預期)或ExpectedException。 –
我擔心如此;-) – Lonzak
這並不壞。通常最好每個測試都測試一件事情。如果你在同一個測試中測試一個列表,比如說notNull,大小和內容,但是不要在一次測試中測試兩個概念不同的東西,那也沒問題。它的可讀性較差。如果每次測試測試一件事情,您可以使用方法名稱來描述您正在測試的內容,而不是'testException' –