0
我與question中的陳述存在相同的問題,但我會用代碼示例來說明問題,即有人可以回答它。雖然斷言失敗,但測試並未失敗
事情是我有2個班。其中之一包含@Test
方法,其中調用validation
所有斷言放置。問題出現時validation
方法是通過反射調用,就像這樣:
public class TestClass {
@Test
public void test() {
BaseValidation baseValidation = new BaseValidation();
baseValidation.validateAll();
}
}
public class BaseValidation {
public void validateAll() {
for (Method method : this.getClass().getDeclaredMethods()) {
method.invoke(new ValidationClass(), null);
}
}
}
public class ValidationClass extends BaseValidation {
public void validate() {
Assert.fail("some message");
}
}
在這種情況下,整個測試將通即使斷言的驗證方法失敗。如何解決它?如果我不使用反射:
@Test
public void test() {
ValidationClass validationClass = new ValidationClass();
validationClass.validate(); // NOT USING REFLECTION
}
它會工作,但這不是我想要的。
你是否捕捉到調用方法拋出的異常?你想達到什麼目的? –
當然,爲了更簡潔的代碼,我只是省略了它。我有這樣的框架,沒有空間來重構它,只需要使它正常工作。 – milosdju
所以,如果你正在捕獲它,那麼你應該得到由測試方法中的AssertionError引發的InvocationTargetException。既然你抓住了它,你的測試就通過了。 –