Я использую xUnit для тестирования моего приложения и в настоящее время настрою тест на использование атрибута [Theory]
для тестирования нескольких разных входов данных.Используйте те же данные теста для нескольких прогонов теории xUnit
Для этого мне нужно создать тестовые данные в моем ранее обдуманном контексте данных. Это работает, но когда я добавляю данные в сам тест, каждый запуск заканчивается тем же самым добавлением данных.
Мой текущий тест:
[Theory]
[InlineData(null, 2)]
[InlineData("en-AU", 1)]
public void Test1(string term, int expectedCount)
{
Fixture.DbContext.Culture.Add(new Culture { Name = "English (Australia)", CultureCode = "en-AU", NativeName = "English (Australia)"});
Fixture.DbContext.Culture.Add(new Culture { Name = "English (United States)", CultureCode = "en-US", NativeName = "English (United States)" });
Fixture.DbContext.Culture.Add(new Culture { Name = "English", CultureCode = "en", NativeName = "English", NeutralCultureFlag = true });
var result = controller.GetRegions(term);
Assert.IsType(typeof (JsonResult), result);
var jsonResult = (JsonResult)result;
Assert.Equal(expectedCount, jsonResult.Data);
}
Есть ли способ только настройки тестовых данных, один раз для каждого прогона InlineData
? Я знаю, что могу поместить его в конструктор тестового класса, но я бы предпочел не делать этого, поскольку это кажется ненужным, если это единственный тест в классе, который использует эти данные.
Я использую прибор класса, в котором я делаю свое издевательство, но кажется, что это бесполезно использовать для настройки данных, которые могут использоваться только в одном тесте. – Steve
@Steve Я полностью согласен ... см. Мои * Заключительные мысли * для ответа. – OmegaMan
Я закончил тем, что добавлял данные в начале моего теста, а затем удалял данные в методе 'Dispose'. Таким образом, я только добавляю данные для этого теста и удаляю его. Не идеальное решение, но будет работать для меня. Благодарю. – Steve