Тестирование модулей Microsoft. Можно ли пропустить тест из тела метода тестирования?
Итак, у меня есть ситуация, когда мне нужно пропустить текущий тест из тела метода тестирования.
Самый простой способ - написать что-то подобное в методе тестирования.
if (something) return;
Но у меня много сложных тестов, и мне нужно пропустить тест из методов, которые я вызываю в текущем тесте метода тестирования.
Возможно ли это?
Ответы
Ответ 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
}