Я пытаюсь выполнить тестирование метода на C# с использованием MSTest. Я проверяю, что сложность пароля принудительно используется методом ChangePasswordAsync. Моя проблема заключается в том, что я хочу протестировать этот метод с рядом параметров. В настоящее время у меня есть единичный тест с несколькими утверждениями для тестирования разных параметров, это разумное решение?Модульное тестирование нескольких утверждений
Я знаю, что когда я использовал другие модульные модули тестирования, были способы тестирования метода с различными параметрами. Есть ли атрибут, который я могу использовать для метода для достижения этого? Мой примерный единичный тест приведен ниже:
/// <summary>
/// Ensures that a password must meet the password complexity of a digit and an alphanumeric, 8 digits long and one
/// special character.
/// </summary>
[TestMethod]
public void TestPasswordComplexity()
{
var result = _UserManager.ChangePasswordAsync(_TestUser.Id, "Password123!", "1!").Result; //Changes the password.
Assert.IsFalse(result.Succeeded);
result = _UserManager.ChangePasswordAsync(_TestUser.Id, "Password123!", "123456789").Result; //Changes the password.
Assert.IsFalse(result.Succeeded);
result = _UserManager.ChangePasswordAsync(_TestUser.Id, "Password123!", "123456789!").Result; //Changes the password.
Assert.IsFalse(result.Succeeded);
result = _UserManager.ChangePasswordAsync(_TestUser.Id, "Password123!", "abcdefghijk").Result; //Changes the password.
Assert.IsFalse(result.Succeeded);
result = _UserManager.ChangePasswordAsync(_TestUser.Id, "Password123!", "abcdefghijK1!").Result; //Changes the password.
Assert.IsTrue(result.Succeeded);
}
Или, альтернативно, вы можете разбить каждый на отдельные модульные тесты?
Имейте одно подтверждение на тест. Разделите их на разные тесты и назовите их соответственно. – NMK
Несмотря на то, что существует несколько утверждений, это логически один тест - вы назвали его хорошо, и он делает то, что он говорит, - он проверяет сложность пароля. Разрыв этого в нескольких методах тестирования не добавляет ничего, кроме увеличения количества тестов, которые необходимо выполнить. –
@TomRedfern это не правда, что вы говорите. Разрыв в отдельных тестах приведет к лучшему пониманию и лучшей ремонтопригодности, если, может быть, 3-й запрос не удастся. В приведенном выше сценарии только один тест будет терпеть неудачу, но если у вас есть одно утверждение за тест, то еще четыре теста будут по-прежнему действительны. Поэтому вам не нужно отлаживать, чтобы найти строку, которая приводит к сбою теста. – Dom84