Остановка Fitnesse (Slim) при любом исключении

Мы обнаружили, что принцип Fail Fast" имеет решающее значение для улучшения ремонтопригодности нашей большой батареи на базе Fitnesse. тестов. Наш спаситель — StopTestException Слима.

Однако перехватывать и преобразовывать любое возможное исключение в эти пользовательские исключения StopException очень громоздко и контрпродуктивно. И этот подход не работает вне светильников. Есть ли способ сказать фитнесу (предпочтительно с помощью тестовой системы Slim) остановить тест при любой ошибке / исключении?

Обновление: соответствующий запрос функции https://github.com/unclebob/fitnesse/issues/935


person Mykola Gurov    schedule 15.05.2016    source источник


Ответы (1)


Большинство исключений, поступающих от фикстур, можно удобно преобразовать в 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);
        }
    }
}
person Mykola Gurov    schedule 05.06.2016