Я думаю, у вас есть несколько вариантов.
1) просто сгенерируйте исключение (и не пройдете тест)
Сгенерировать исключение не удастся выполнить модульный тест.Есть множество различных типов исключений, но база просто Exception
.Вы можете проверить различные типы доступных исключений здесь .Там, где это возможно, попытайтесь выбрать исключение, наиболее точно представляющее ошибку (поэтому неверные аргументы, например, используют ArgumentException
или некоторую производную от него).
Ваш тест будет выглядеть примерно так:
[Test]
public void CompareVariables()
{
if (!string.Equals(serialNumberInfo, serialNumberReport))
throw new Exception($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");
// The rest of your tests (only run if serialNumberInfo and serialNumberReport) are equal.
}
2) Используйте утверждение (и не пройдете тест)
Обычно предполагается, что модульные тесты подтвердят, что произошло что-то желаемое.Если этого не произошло, то должно быть сгенерировано исключение (которое часто обрабатывается для вас некоторой структурой утверждений).
Чтобы вы могли перевернуть тест, чтобы сделать это:
[Test]
public void CompareVariables()
{
serialNumberInfo.ShouldBe(serialNumberReport);
// The rest of your tests (only run if serialNumberInfo and serialNumberReport) are equal.
}
Это делается с помощью Следует , но существует бесчисленное множество платформ утверждений, поэтому выберите свой любимый.(У mstest есть встроенный, но я считаю его менее читабельным, но это личное предпочтение).
Примечание. Используйте утверждение только тогда, когда вы хотите явно убедиться, что это должно было произойти.Т.е. это должно быть правдой, чтобы мой тест прошел, а не если это произошло, то прервитеЭто трудно объяснить, поэтому я надеюсь, что это имеет смысл?
Исключения для случаев, когда что-то пошло не так, Утверждения для того, когда что-то должно было пойти не так.
3) Выйти из теста (и пройти тест)
Если тест завершается без сгенерированного исключения (либо вручную, либо через структуру утверждений), то этот тест считается проходящим тестом.Поэтому, если вы хотите обработать это как проход, вы можете просто вернуться из теста.
[Test]
public void CompareVariables()
{
if (string.Equals(serialNumberInfo, serialNumberReport))
{
Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} are a match! Proceed!");
}
else
{
Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");
return;
}
// The rest of your tests
}
Это пометит тест как проходящий, но означает, что остальные операции втест не запускается.Однако я бы постарался этого не делать - если только вы действительно не понимаете, почему вы этого хотите, потому что вы можете начать проходить тесты, не зная, почему они прошли (т.е. ничего не утверждая)
Надеюсь, это поможет