Я пытаюсь правильно структурировать свои юнит-тесты, и я не уверен, что лучше всего разделить мои тестыЯ использую C # и xUnit.
Для целей этого вопроса я тестирую этот простой код метода расширения:
public static bool IsNullOrEmpty(this string str)
{
return string.IsNullOrEmpty(str);
}
У меня есть несколько вариантов тестирования, и я не знаю, что правильно.Я мог бы написать Факт или Теорию.
Теория Должен ли я использовать Теорию?Один тест для положительного и один для отрицательного?
[Theory, IsUnit]
[InlineData(null)]
[InlineData("")]
public void Test_IsNullOrEmpty_Positive(string value)
{
Assert.True(value.IsNullOrEmpty());
}
[Theory, IsUnit]
[InlineData("TEST")]
[InlineData(" ")]
public void Test_IsNullOrEmpty_Negative(string value)
{
Assert.False(value.IsNullOrEmpty());
}
Факт Должен ли я использовать Факт?Положительное и отрицательное в одном:
[Fact, IsUnit]
public void Test_IsNullOrEmpty()
{
// Positive testing.
string myString = null;
Assert.True(myString.IsNullOrEmpty());
myString = "";
Assert.True(myString.IsNullOrEmpty());
// Negative testing.
myString = " ";
Assert.False(myString.IsNullOrEmpty());
myString = "TEST";
Assert.False(myString.IsNullOrEmpty());
}
ИЛИ если я проведу отдельные тесты:
[Fact, IsUnit]
public void Test_IsNullOrEmpty_Null()
{
string myString = null;
Assert.True(myString.IsNullOrEmpty());
}
[Fact, IsUnit]
public void Test_IsNullOrEmpty_Empty()
{
var myString = "";
Assert.True(myString.IsNullOrEmpty());
}
[Fact, IsUnit]
public void Test_IsNullOrEmpty_Space()
{
var myString = " ";
Assert.False(myString.IsNullOrEmpty());
}
[Fact, IsUnit]
public void Test_IsNullOrEmpty_Word()
{
var myString = "TEST";
Assert.False(myString.IsNullOrEmpty());
}
Я не настолько опытен в написании тестов и хочу следовать передовым методам, поэтому я хочу толькочтобы узнать, что из вышеперечисленного является наилучшей практикой в контексте C # и xUnit (надеюсь, здесь есть правила, и этот вопрос не основан на мнениях: -)).
Заранее спасибо за любые указатели !!