我有一個正常的類中的方法具有與多個catches
一個try
:Java JUnit - 是否可以確定是否拋出了哪個異常?
Object returnObject = null;
try {
// do some stuff to set returnObject
}
catch (NoSuchMethodException ex) {
ex.printStackTrace();
}
catch (InstantiationException ex) {
ex.printStackTrace();
}
catch (IllegalAccessException ex) {
ex.printStackTrace();
}
catch (IllegalArgumentException ex) {
ex.printStackTrace();
}
catch (InvocationTargetException ex) {
ex.printStackTrace();
}
return returnObject;
在我UnitTest
我想測試方法是否成功地通過了東西就在try
,沒有進入caught Exceptions
之一。
我知道,如果我沒有在我的正常類的方法有try-catch
,我可以只使用一個try-catch
與Assert.fail(...);
,或ExpectedException-tag
在測試方法的前面。
但是,我的方法確實有一個try-catch
,我想要UnitTest
如果我成功通過try
,而不去catches
之一。 (正如你在上面的代碼中看到的,我所有的catches
只有一個ex.printStackTrace();
)
PS:我也不能使用try
中的東西來測試。所以我不能檢查returnObject
是否爲null
之後的方法,因爲在這種情況下,我希望它是null
(但不會去catch
)。否則我不會問這個問題。
在此先感謝您的回覆。
如果你只是'.printStackTrace()',不是一個機會;無論如何,這是非常糟糕的做法。難道你不能把它拋出去,或者拋出另一個異常作爲原因? – fge
@fge我知道這是不好的做法。我沒有想過我會遇到這樣的情況,但我在這裏。我也許可以'拋出新的AssertionException();',但是當我剛剛運行普通項目時進入這個'catch'時會發生什麼。我還考慮添加一個if(unitTestBoolean)throw new AssertionException ();',其中'unitTestBoolean'將在默認的'false'在我的正常項目中,並且我可以在我的'UnitTest'中將它(暫時)設置爲'true'。我只是希望有一種更簡單的方法來查看'我的'UnitTests'中'Exception'是否被'抓住',雖然.. –
@Joe:這並不完全像我對這個問題的重複。看來,OP想要避免調用異常情況。 – Makoto