Убиваем FitNesse из приспособления

Я использую FitNesse для тестирования с использованием Fixture, написанного на C #. Одно из моих приспособлений запускает несколько наборов тестов для запуска в Ab Initio в среде Unix. Я хотел бы иметь возможность убить весь набор тестов, если один из тестов в нем не сработает. Я предполагаю, что мне понадобится какое-то возвращаемое значение из набора тестов (в окне unix), а затем оно будет передано обратно в мое приспособление, которое убьет FitNesse (из моего приспособления C #). Вот как сейчас выглядит мой метод KickOff ():

public string KickOff()
{
    var data = new Dictionary<string, string>();
    foreach (var row in System.IO.File.ReadAllLines(unixConfigFile))
        data.Add(row.Split('=')[0], String.Join("=", row.Split('=').Skip(1).ToArray()));

    string server = data["servername"];
    string userId = data["username"];
    string password = data["password"];

    StringEncryptor3DES encryptor = new StringEncryptor3DES("fitnesse");
    password = encryptor.Decrypt(password);            

    UnixScriptRunner runner = new UnixScriptRunner(server, userId, password, unixPath, scriptName,EtlType.AbInitio);


    return runner.Run() & EtlStatus.IsEtlSuccessful(runner.LogFile,EtlType.AbInitio) ? "True":"False";
}

Я думаю, мне нужно что-то, что улавливает значение EtlStatus.IsEtlSuccessful (), если оно ложно, оно завершит FitNesse. У меня есть два вопроса:

Правильно ли это рассуждение?

Какой код нужен для завершения / уничтожения FitNesse (или завершения набора тестов, если есть более изящный способ)?

Изменить: я провел еще немного исследований, и похоже, что это «бегун», которого я должен убить. Все еще не знаю, как это сделать ...


person intA    schedule 08.05.2014    source источник


Ответы (1)


Если вы используете Slim, вы можете создать исключение с «StopTest» в имени класса, чтобы остановить тест.

http://www.fitnesse.org/FitNesse.UserGuide.WritingAcceptanceTests.SliM.ExceptionHandling

Если вы используете Fit, вы можете бросить AbandonStoryTestExecption, чтобы остановить тест.

http://fitsharp.github.io/Fit/AbandonStoryTest.html

В следующем выпуске (в любой день!) Появится новая функция Fit, которая вызовет исключение AbandonTestSuiteException, чтобы остановить весь набор тестов. У Slim AFAIK нет сопоставимой функции.

person Mike Stockdale    schedule 08.05.2014
comment
Так вы говорите, что в настоящее время нет возможности остановить весь набор тестов? Только текущий тест? Разве этот тест уже не был бы проведен, если бы он не прошел? - person intA; 09.05.2014
comment
Если тестовый шаг (таблица) не прошел, по умолчанию будут выполнены остальные шаги. Если вы создадите соответствующее исключение, FitNesse не будет пытаться выполнить оставшиеся шаги. - person Mike Stockdale; 09.05.2014
comment
В настоящее время нет встроенного способа остановить весь пакет. - person Mike Stockdale; 09.05.2014
comment
Итак, как вы думаете, это невозможно сделать из приспособления? Есть ли обходной путь? Надо ли это делать на исполняющем сервере? (В моем случае сервер unix, на котором живет Ab Initio) - person intA; 13.05.2014
comment
При обнаружении сбоя вы можете сохранить где-нибудь флаг «остановить тест» и выдать исключение «StopTest». В SetUp каждого теста проверьте флаг «остановить тест» и бросьте «StopTest», если он установлен. Это запустит весь пакет, но каждый тест после сбоя немедленно завершится. - person Mike Stockdale; 13.05.2014