繁体   English   中英

使用受保护对象C#编写单元测试的好方法是什么(使用NMock和NUnit框架)

[英]What's a good way to write Unit tests for code with protected objects C# (using NMock, and NUnit framework)

为包含其他对象的单个类编写单元测试时,最佳使用方法是什么

模拟对象以避免依赖于其他类的测试。

例1:

public class MyClass
{
   protected MyObject _obj;

   public MyClass()
   {
       _obj = new MyObject();
   }

   public object DoSomething()
   {
      //some work
      _obj.MethodCall();
      //more work;
      return result;
   }
}

我宁愿不公开受保护的值来为代码创建单元测试。 包装类会

为测试工作,但有更好的方法吗?

例2:

public class MyClass
{

   public object DoSomething()
   {

      //some work
      MyObject obj = new obj(parameters);
      _obj.MethodCall(Method1);
      //more work;
      return result;
   }

   public int Method1()
   { ... }    

}

与上面的例子类似,但ojbect是在我调用的方法中创建的。

例3:

public class MyClass
{

   public object DoSomething()
   {

      //some work
      obj.MethodCall(Method1);
      //more work;
      return result;
   }

   public int MethodA()
   { ... }    

}

当它仅用作委托时,有没有办法测试MethodA?

我建议你看一下依赖注入。 有一件事是使用模拟对象,但除非你使用像TypeMock这样的东西,它基本上允许你动态修改你的代码,你想要有一种方法来注入你的类所依赖的实例,如果你想摆脱它依赖。 所以在示例1中,我建议不要在构造函数中新建一个MyObject实例,而是让调用者提供该实例。 在这种情况下,您可以轻松地将其替换为模拟或甚至存根。

您是否尝试从MyClass派生UTMyClass?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM