Я сейчас пишу несколько юнит-тестов в xUnit.До сих пор я использовал MSTest для UT, поэтому каждый тестовый пример представлял собой отдельный тест в файле.С xUnit я могу использовать параметризованные тесты.Что я не уверен в их использовании, что является более распространенным или я должен использовать больше.
Мой метод, который я тестирую, прост - он принимает десятичное число и преобразует его в строку с определенными атрибутами.У теста всегда один и тот же код, он отличается только входом и выходом.Пример ниже является упрощенной версией, но я думаю, что она все еще выражает точку.
[Fact]
public void valueIsZero()
{
var formattedValue = Formatter.Format(0m);
Assert.Equal("0", formattedValue);
}
[Fact]
public void valueIsOne()
{
var formattedValue = Formatter.Format(1m);
Assert.Equal("1", formattedValue);
}
Это способ, которым я бы писал тесты в MSTest, но в xUnit я могу написать эти тесты с теорией, подобной этой:
public static IEnumerable<object[]> Data =>
new List<object[]>
{
new object[] { 0m, "0" },
new object[] { 1m, "1" }
};
[Theory]
[MemberData(nameof(Data))]
public void multipleValue(decimal value, string expectedResult)
{
var formattedValue = Formatter.Format(value, true, false, true);
Assert.Equal(expectedResult, formattedValue);
}
Есть ли какие-либо преимущества или недостатки при первом или втором подходе?Или какой подход более распространен?