Fitnesse с .NET загадочным образом застревает при запуске комплектов - PullRequest
4 голосов
/ 12 июля 2010

(Конечно, я могу заявить, что это «таинственно», потому что я не смог определить проблему. Я надеюсь, что она станет очевидной для одного из вас, эрудированных читателей, и что вы сможете просветить меня :-)

Выполнение одного теста пригодности в моем браузере (FireFox или IE) работает нормально, но когда я запускаю набор тестов или наборы наборов, Fitnesse просто останавливается где-то очень скоро после начала. Он никогда не сообщает о завершении теста; он просто висит.

Я использую фитнес в Windows XP на базе кода .NET 3.5. Сначала я решил проблему, снабдив диагностическими кодами тесты фитнеса и фитнесс-приборов диагностическим кодом, чтобы попытаться определить, действительно ли это была блокировка фитнеса или (что более вероятно) моя база кода, к которой получили доступ эти приборы. Поэтому я создал несколько диагностических процедур, которые записывают в файл журнала, чтобы сообщить мне, когда я вхожу и покидаю каждый прибор. Если файл журнала в последний раз сообщает «enter», это указывает на то, что он застрял в базе кода; если журнал в последний раз сообщает об «отпуске», это указывает на пригодность. Диагностика довольно проста, требует, чтобы каждый прибор был оборудован вручную - соблюдайте методы Diagnostic.Enter и Diagnostic.Leave в приведенном ниже коде скелета. (Аргумент метода Leave позволяет мне увидеть текст исключения, если оно происходит.)

public class AddFoobarEntityFixture : ColumnFixture
{
    public bool Ok()
    {
        Diagnostic.Enter();
        string exitMessage = null;
        try
        {
            . . .
        }
        catch (Exception exc)
        {
            exitMessage = exc.Message;
            return false;
        }
        finally
        {
            Diagnostic.Leave(exitMessage);
        }
        return true;
    }
}

После проведения серии испытаний для одного и того же набора тестов я заметил пару поразительных наблюдений:

  1. Запускается из браузера, вывод fitnesse отстает от прогрессии теста и (в этом сценарии блокировки) никогда не догоняет. То есть в браузере я вижу где-то от одной до, возможно, десятка выполненных тестовых таблиц. Файл журнала, с другой стороны, содержит до 35 тестовых таблиц для одного и того же выполнения. Я подозреваю, что это отставание не связано с блокировкой, потому что веб-страница перестает обновляться задолго до того, как происходит блокировка, когда файл журнала продолжает сообщать о выполнении тестовых таблиц.

  2. Блокировка происходит в случайных местах . Моя грубая гистограмма ниже показывает почти дюжину испытаний (по одному на строку) со временем (или количеством тестовых таблиц) на горизонтальной оси. Каждый «Х» представляет собой одну обработанную тестовую таблицу.

    1> XXXXXXXXXXXXXXXXXXXXXXX
    2> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    3> XXXXXXXXXXXXXXXXXXXXXX
    4> XXXXXXXXXXXXXXXXXXXXXXX
    5> XXXXXXXXXXXXXXXXXXXXXXXX
    6> XXXXXXXXXXXXXXXXXXXXXXX
    7> XXXXXXXXXXXXXXXXXXXXXXX
    8> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    9> XXXXXXXXXXXXXXXXXXXXXXXX
    A> XXXXXXXXXXXXXXXXXXXXXXXX
    B> XXXXXXXXXXXXXXXXXXXXXXXX

  3. Без исключения, каждый Ввод был сбалансирован с помощью Leave в журнале. Это говорит о том, что проблема связана с фитнесом, а не с тестируемым кодом. Однако он опирается на два важных предположения: во-первых, что каждое тестовое устройство оснащено инструментами, а во-вторых, что внутри каждого инструментального тестового устройства только тривиальный код находится вне скобок Enter-Leave (например, такие как оператор return, возвращающий только локальное значение или объявление переменной с простым или без инициализированного значения). Я не полностью проверил эти два предположения, но я думаю, что они окажутся в порядке.

Я надеялся, что fitnesse обеспечил свою собственную регистрацию, чтобы я мог видеть, например, какой SetUp или SuiteSetUp был унаследован, когда были обработаны включения, какая тестовая таблица выполнялась и т. Д. Однако из того, что я видел, только возможность регистрации отчетов о пригодности для детализации всей тестовой страницы, что вызывает сожаление.

Любопытно, что мои собственные поиски в сети совершенно не упоминали о других, кто сталкивался с этой проблемой в фитнесе, что, конечно, сильно подчеркивает, что проблема как-то заключается в моей кодовой базе.

Будем благодарны за любые предложения по изоляции этой проблемы, будь то в фитнесе или в моей базе кода!


2010.07.15 Обновление

Как ни странно, я думаю, что исправил проблему. Изменив порт, который использует fitnesse, с (по-моему, по умолчанию) 8080 на менее популярный номер порта, теперь я могу без проблем запускать наборы тестов или наборы наборов. Я проверил, что у меня больше ничего не работает на порте 8080 (с TCPView). Так что у кого-нибудь есть мысли о том, почему это будет иметь значение?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2013

Я знаю, что это старый вопрос, но подумал, что добавлю его для любых будущих зрителей.

У нас возникла проблема с запуском пакетов, и это оказался недавно установленный антивирус Trend Micro (иликак они называют это «Worry-Free Business Security»).

Функциональность «Фильтрация URL-адресов» является частью этого пакета.

У вас работает что-то подобное?

0 голосов
/ 13 июля 2010

Попробуйте это

http://www.asoftwarecraft.com/2010/01/troubleshooting-with-fitsharp-and.html

и посмотрите, не происходит ли необработанное исключение.

...