У меня есть одноэлементный-класс, который я хочу, чтобы дразнить для тестирования следующим образом:Создать фиктивный экземпляр для одноплодной
public class MyClass {
private readonly static MyClass _instance = new MyClass();
public MyClass Instance { get { return this._instance; }}
private MyClass()
{
DoSomething();
}
}
Как частный конструктор MyClass
имеет некоторые тяжелые логики, включая чтение некоторые конфигурационные-файлы, которые я хочу для издевательства одиночного экземпляра для целей тестирования. Однако я не вижу никакого способа сделать это, поскольку я не могу пометить свойство Instance
виртуальным.
Я думаю, у меня есть две возможности, но я не знаю, что подходит лучше. Первый из них делает (частный) DomeSomething
-метод переопределяемым (что означает protected
и virtual
) и создает для него производную реализацию в производном классе (макет). Однако изменение моей класс-структуры для тестирования не кажется мне правильным.
Другим способом может быть использование FormatterServices.GetUninitializedObject()
, как предложено в this approach. Я просто создаю экземпляр без установки любых ее членов. Впоследствии я мог бы проиндексировать членам, которые мне нужны, используя отражение более простой логики. В любом случае, это тоже кажется мне грубым.
Есть ли другие возможности у меня? Или мне нужно выбирать между этими двумя раздражающими?
Nice инструмент. Unfortunetaly его не бесплатно, но я считаю, что попробуй его бесплатную пробную версию. – HimBromBeere