Тестирование модулей Microsoft. Можно ли пропустить тест из тела метода тестирования? - программирование
Подтвердить что ты не робот

Тестирование модулей Microsoft. Можно ли пропустить тест из тела метода тестирования?

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

if (something) return;

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

4b9b3361

Ответ 1

В дополнение к другим ответам (и, как было предложено): я бы предложил использовать Assert.Inconclusive over Assert.Fail, так как исходная ситуация с плакатом не является явным случаем отказа.

Используя Inconclusive, в результате ясно, что вы не знаете, было ли испытание успешным или неудачным, что является важным отличием. Не доказательство успеха не всегда является провалом!

Ответ 2

Вы не должны пропускать тест таким образом. Лучше выполните одно из следующих действий:

  • отметьте тест как проигнорированный с помощью атрибута [Ignore]
  • throw NotImplementedException из вашего теста
  • напишите Assert.Fail() (иначе вы можете забыть завершить этот тест)
  • удалить этот тест

Также имейте в виду, что ваши тесты не должны содержать условную логику. Вместо этого вы должны создать два теста - отдельный тест для каждого пути кода (с именем, которое описывает, какие условия вы тестируете). Итак, вместо написания:

[TestMethod]
public void TestFooBar()
{
   // Assert foo
   if (!bar)
      return;
   // Assert bar
}

Напишите два теста:

[TestMethod]
public void TestFoo()
{
   // set bar == false
   // Assert foo
}

[Ignore] // you can ignore this test
[TestMethod]
public void TestBar()
{
   // set bar == true
   // Assert bar
}

Ответ 3

Вы можете проигнорировать тест и оставить его полностью нетронутым в коде.

[TestMethod()]
[Ignore()]    //ignores the test below
public void SomeTestCodeTest()
{
   //test code here

}