У меня есть класс, который имеет некоторые модульные тесты, но когда я запускаю тесты, я хотел бы, чтобы класс был создан с помощью другого конструктора. Что-то вроде этого:NUnit выполняет с альтернативным конструктором
[TestFixture]
public class MyClass
{
public MyClass() { /* set up for production */ }
[TestFixtureConstructor]
public MyClass() { /* set up for testing */ }
[Test]
public void FirstTest()
{
// assert some values
}
}
Возможно ли это?
Я рассмотрел использование статического заводского метода для создания класса в производстве (с помощью частного конструктора) и публичного конструктора для платформы тестирования.
Есть ли у кого-нибудь другие решения?
100% правильный. Для OP - вы также не должны пытаться создавать специальные конструкторы только для теста. Если вам нужно иметь конструктор, чтобы принимать зависимости, и единственное, что его использует, это тесты, это нормально, но этот конструктор не должен скрываться от всех остальных. Это делает ваш класс более гибким, чтобы потребители могли проходить в зависимостях. – womp
Согласен. Это абсолютно неправильный способ сделать это. Создайте отдельный класс и используйте атрибуты Setup и Teardown – lomaxx