У меня есть тест, который выглядит следующим образом:
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void MyTest_String1IsEmpty_ThrowsException()
{
string string1 = ""
string string2 = "b"
string string3 = "c"
_myMethod.TestMethod(arg1,arg1,arg1);
}
Тест предназначен для проверки, если строка1 пуста. Мой вопрос, с точки зрения передового опыта, должны ли переменные, необходимые для передачи методу TestMethod, передаваться в качестве аргументов теста:
[TestMethod]
[DataRow("", "b", "c")]
[ExpectedException(typeof(ArgumentException))]
public void MyTest_String1IsEmpty_ThrowsException(string string1, string string2, string string3)
{
_myMethod.TestMethod(string1,string2,string3);
}
Аргумент, который я тестирую, передается в тест :
[TestMethod]
[DataRow("")]
[ExpectedException(typeof(ArgumentException))]
public void MyTest_String1IsEmpty_ThrowsException(string string1)
{
string string2 = "b"
string string3 = "c"
_myMethod.TestMethod(string1,string2,string3);
}
Или точные переменные задаются внутри самого теста, как в первом примере кода?
Я вижу вариант использования, если я тестировал, например, несколько значений для строки1, если бы я проверял, что string1 имеет значение null или пробел, я просто передал бы значения для String1 в тест, и строки данных были бы:
[DataRow("")]
[DataRow(" ")]
[DataRow(null)]