0

我们发现“快速失败”原则对于提高基于 Fitnesse 的大型测试组的可维护性至关重要。Slim 的StopTestException是我们的救星。

但是,捕获任何可能的异常并将其转换为那些自定义的 StopException 非常麻烦且适得其反。而且这种方法在固定装置之外不起作用。有没有办法告诉 Fitnesse(最好使用 Slim 测试系统)停止对任何错误/异常的测试?

更新:相应的功能请求https://github.com/unclebob/fitnesse/issues/935

4

1 回答 1

0

大多数来自固定装置的异常都可以StopTestException通过实现FixtureInteraction接口方便地转换为,例如:

public class StopOnException extends DefaultInteraction {

    @Override
    public Object newInstance(Constructor<?> constructor, Object... initargs) throws InvocationTargetException, InstantiationException, IllegalAccessException {
        try {
            return super.newInstance(constructor, initargs);
        } catch (Throwable e) {
            throw new StopTestException("Instantiation failed", e);
        }
    }

    @Override
    public Object methodInvoke(Method method, Object instance, Object... convertedArgs) throws InvocationTargetException, IllegalAccessException {
        try {
            return super.methodInvoke(method, instance, convertedArgs);
        } catch (Throwable e) {
            throw new StopTestException(e.getMessage(), e);
        }
    }

    public static class StopTestException extends RuntimeException {

        public StopTestException(String s, Throwable e) {
            super(s, e);
        }
    }
}
于 2016-06-05T16:35:06.437 回答