Многие из моих модульных тестов уровня класса загружают модель данных и выполняют различные тесты уровня класса.Однако большая часть бизнес-логики зависит от данных в модели.Поэтому мое тестирование на уровне класса выглядит следующим образом:
public class TestFoo
{
// Data model
Model _myDataModel;
// Class under test
Foo _foo;
[Setup]
public void Initialize()
{
// Create data model
_myDataModel = new Model();
_myDataModel.Load(); // Loads the file
// Create the class under test
_foo = new Foo();
}
[TearDown]
public void Dispose()
{
}
[Test]
public void TestFooCase1()
{
// Code for test case that tests _foo and uses the data model
}
}
Однако я хотел бы выполнить основную часть моих тестов с двумя или более моделями данных, т.е. мне нужно вызвать _myDataModel.LoadModelX()
или _myDataModel.LoadModelY()
вметод установки.
Один из способов, который я задумал сделать, - создать экземпляр модели в самом тестовом примере, как показано ниже, но для этого необходимо вызывать метод load в каждом тестовом примере.
[Setup]
public void Initialize()
{
// Create the class under test
_foo = new Foo();
}
[TearDown]
public void Dispose()
{
}
// Use TestCase to specify the model as an argument for each test case
[TestCase(modelX)]
[TestCase(modelY)]
public void TestFooCase1(string modelName)
{
// Create data model
_myDataModel = new Model();
_myDataModel.Load(modelName); // New method which loads the specific model
// Code for test case that tests _foo and uses the data model
}
Я думаю, что должен быть лучший подход, возможно, путем определения моего собственного атрибута или расширения NUnitTestFixture.Мне интересны другие идеи.