MSTEST - продолжение после сбоя Assert - PullRequest
5 голосов
/ 15 февраля 2012

Интересно, есть ли простой способ завершить тест после сбоя Assert? Мы использовали Galileo для всех наших автоматических тестирований, но мы переместили среду тестирования Visual Studio. У нас был метод, который позволил бы провалить тест, но продолжить.

        public static bool DoAssertAndContinue(Action assert)
    {
        try
        {
            assert();
            return true;
        }
        catch (AssertionException ae)
        {
            ConfigContext.WriteLine(ae.Message);
            return false;
        }
    }

Это то, что мы использовали раньше ... и это будет называться так:

assertionResults.Add(Automation.Utils.CommonMethods.DoAssertAndContinue(() => Assert.IsTrue(detail.ValidateName(boo, urns))));

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

Ответы [ 3 ]

5 голосов
/ 21 февраля 2012

Вместо AssertionException теперь вы должны перехватить UnitTestAssertException , которое является базовым исключением для всех ошибок mstest assert.

1 голос
/ 15 февраля 2012

Вы также можете использовать Try / Catch в MSTest.В блоке Catch вы можете отследить конкретную ошибку и распечатать ее с помощью Console.Write, чтобы узнать об ошибке.Я бы порекомендовал вам заглянуть в эту ветку для более подробной информации.

РЕДАКТИРОВАТЬ 1: Лично я не использую try / catch для прохождения моего метода тестирования.Я пишу тестовый метод, чтобы найти дефект в реальном продукте.Поэтому, если вы ожидаете, что ваш вызывающий метод даст вам какое-то конкретное исключение, я бы предложил использовать атрибут ExpectedException .Это применимо, если вы используете свой метод тестирования для отдельных тестовых данных.

Теперь, если вы хотите передать несколько тестовых данных в свой метод тестирования.Тогда я бы предложил перейти к тестам, управляемым данными.Здесь вы можете хранить все свои тестовые данные в XML, XLS или в БД.Затем, используя этот входной файл, вы можете ввести несколько тестовых данных в ваш метод тестирования.Старайтесь не использовать try / catch здесь и для любых тестовых данных, если ваш вызывающий метод отправит вам какое-то исключение, а затем посмотрите, обработает ли MSTest его и перейдет к следующим тестовым данным или нет.Если он перемещается, то в окне Результаты теста вы сможете увидеть, почему для этих конкретных тестовых данных ваш метод не удался.Для концепции управления данными см. ссылка

0 голосов
/ 15 февраля 2012

Фреймворк MsTest создает исключение при неудачном утверждении.Это распространение из метода модульного теста является причиной того, что тест не пройден.Если вы хотите продолжить ошибочное утверждение, вам просто нужно обработать это исключение и не допустить его выхода из метода.

...