Сбой всего комплекта тестов в случае сбоя одного теста во время выполнения зависимого теста через VSTS - PullRequest
0 голосов
/ 23 мая 2019

У меня есть зависимые тесты в моем наборе. Если мой первый тест не пройден, он также помечает все остальные тесты как неудачные. Таким образом, в конце он показывает, что все тесты не пройдены, что не соответствует действительности.

Есть ли способ, которым я могу пометить тест как «проваленный из-за сбоя зависимого теста» или что-то еще, чтобы он показал, что он провалился из-за сбоя зависимого теста. Есть ли способ добавить новое состояние в тест вместо того, чтобы иметь только состояния прохождения, сбоя, невыполнения.

Я добавил общий флаг в наших тестах, который помечает тесты как проваленные при сбое любого зависимого теста. Как вы можете видеть в коде ниже. Он помечает тест как Assert.Fail внутри другой части, если предыдущий тест не удался. Есть ли способ пометить его в каком-то другом состоянии и не сбить, например: «Сбой из-за сбоя зависимого теста».

bool hasPreviousTestCasePassed = false
[TestMethod]
    public void DemoTest1()
    {
     try
        {
          ////perform all the test steps
          hasPreviousTestCasePassed = true;
        }
        catch (Exception ex)
        {
            hasPreviousTestCasePassed = false;
        }
    }

 [TestMethod]
    public void DemoTest2()
    {
        try
        {
            if (hasPreviousTestCasePassed)
            {
              ///perform all the test steps and mark flag as true after all steps
             hasPreviousTestCasePassed = true;
            }
            else
            {    
               Assert.Fail("Execution for " + TestContext.TestName + " is aborted as the previous test case failed.");
            }
        }
        catch (Exception ex)
        {
            hasPreviousTestCasePassed = false;
        }
    }

Ожидаемый результат будет состоять в том, чтобы иметь возможность пометить тест как Провал из-за сбоя зависимого теста, а не просто пометить его как провальный.

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

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

Ответы [ 3 ]

1 голос
/ 27 мая 2019

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

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

В настоящее время я работаю над тестами для кассового аппарата POS.Кассовый аппарат может создавать документы, такие как квитанции, накладные, счета и т. Д. Чтобы провести специальные тесты для документов такого типа, я просто загружаю соответствующий документ из БД для работы, таким образом, быстро получая этот POS в определенном состоянии.Я сделал эти документы до тестирования, данные всегда одинаковы, но их можно легко настроить.

0 голосов
/ 27 мая 2019

Поможет ли Assert.Inconclusive? Документы MSDN

Будет проведено различие между провальным тестом и «подозрительным тестом» из-за предыдущего сбоя.

0 голосов
/ 24 мая 2019

Может быть, вы можете использовать свойство TestContext.Properties для сохранения статуса конкретного теста в виде пары ключ-значение.Итак, внутри конкретного теста вы создадите пару: TestContext.Properties.Add("testStatus", "Failed due to dependent test").И позже вы будете читать собственность как string mystatus = TestContext.Properties["testStatus"].ToString().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...