Я работаю над большой кодовой базой, в которой практически нет покрытия юнит-тестами.Мы собираемся начать двигаться к более ориентированному на тестирование подходу, поэтому я подумал, что попытаюсь написать модульный тест для очень простой функции, которую я добавил, в основном
class ClassUnderTest {
public void SetNoMatchingImage() {
currentState.State = FSMState.NoMatchingImage;
... // Some more logic
NotifyViews();
}
public ViewStatus GetStatus() {
...
if (currentState.State == FSMState.NoMatchingImage)
return ViewStatus.EmptyScreen;
...
}
...
}
Хорошо, так что протестируйте это, япросто хотел бы сделать:
[Test]
public void TestSetNoMatchingImage() {
ClassUnderTest view = new ClassUnderTest(...);
view.SetNoMatchingImage();
Assert.AreEqual(ViewStatus.EmptyScreen, view.Status);
}
Но моя проблема здесь в том, что конструктор ClassUnderTest принимает 3 аргумента для неинтерфейсов, которые не могут быть нулевыми, поэтому я не могу легко создать ClassUnderTest.Я могу попытаться создать экземпляры этих классов или заглушить их, но проблема для них та же: каждый из конструкторов принимает аргументы, которые должны быть созданы.И проблема та же для ... и так далее.Результатом, конечно, являются очень большие накладные расходы и большое количество кода, необходимого даже для очень простых тестов.
Есть ли хороший способ справиться с такими случаями, чтобы упростить написание тестовых примеров?