Я только начал с модульного тестирования и использую фреймворк xUnit.У меня есть класс AbstractTest, который определяет некоторые абстрактные тестовые методы, которые я буду использовать в каждом тестовом классе. Проблема в статическом поле - InsertData .MemberData в этом случае InsertData должен быть статическим.Я не могу присвоить какое-либо значение InsertData в унаследованном классе (TestClass), потому что я получил ошибку до того, как отладчик коснулся обоих конструкторов.
public abstract class AbstractTest<TModel> where TModel : class
{
public IRepository<TModel> repo;
public static IEnumerable<object[]> InsertData;
[Theory]
[MemberData(nameof(InsertData))]
public virtual void AbsTestInsert(TModel model)
{
try
{
repo.AddUpdate(model);
Assert.True(true);
}
catch (Exception ex)
{
Assert.True(false, ex.Message);
}
}
}
public class TestClass : AbstractTest<TestModel>
{
public TestClass()
{
repo = TestRepository();
}
}
Поскольку я наследую класс AbstractTest, у меня будет тест.
Я не могу найти решение, чтобы InsertData оставалась статичной, но переопределить ее значение в унаследованном классе.
У меня есть идея с чем-то вроде этого:
public static IEnumerable<object[]> InsertData() => Data;
public abstract/virtual IEnumerable<object[]> Data()
{
return ...;
}
Но для этого данные также должны быть статичными ...