即使断言失败,测试也不会失败
Test is not failing even though assertion has failed
我遇到了与此 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
}
它会起作用,但这不是我想要的。
如果您在 invoke 调用中捕获异常,那么您应该得到 InvocationTargetException,它会由测试方法中的 AssertionError 引发。既然你抓住了它,你的测试就通过了。抛出它或获取路由原因以将测试标记为失败。
我遇到了与此 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
}
它会起作用,但这不是我想要的。
如果您在 invoke 调用中捕获异常,那么您应该得到 InvocationTargetException,它会由测试方法中的 AssertionError 引发。既然你抓住了它,你的测试就通过了。抛出它或获取路由原因以将测试标记为失败。