单身模式的单元测试?

时间:2014-08-06 03:28:31

标签: c# unit-testing singleton moq system.reflection

假设我正在使用包含类A和B的包p1。我无权访问包p1的实现。

现在,在我的应用程序中,我只想在任何时候只有一个A实例。

我在A类的应用程序中创建了一个单例类C.

样品:

public Class ClassC
{
    private static readonly ClassA singletonObj = new ClassA();

    private ClassC();

    public static ClassA ClassC
    {
       get
       {
          return singletonObj;
       }
    }
}

如何对C类进行单元测试以确保为我的应用程序创建单个实例?

1 个答案:

答案 0 :(得分:0)

如果你想要A级单身,那么你的上述代码是无关紧要的 你应该像这样编写A类:

public Class ClassA
{
   private static Singleton instance;

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }


//Any other function & members related to ClassA

}

public Class ClassA { private static Singleton instance; private Singleton() {} public static Singleton Instance { get { if (instance == null) { instance = new Singleton(); } return instance; } } //Any other function & members related to ClassA }

为了测试单重,尝试在代码中创建几个ClassA实例。好的结果是,每次创建"新实例"时,你得到相同的实例,意思是 - 你可以有2个具有不同数据的实例 - 它们都将是指向同一个实例的指针。