c# - 最小起订量测试无效方法

标签 c# unit-testing nunit moq

您好,我是最小起订量测试的新手,很难做一个简单的断言。 我正在使用一个界面

 public interface IAdd
 {
     void add(int a, int b);
 }

IAdd 接口(interface)的起订量是:

  Mock<IAdd> mockadd = new Mock<IAdd>();
  mockadd.Setup(x => x.add(It.IsAny<int>(), It.IsAny<int>()).callback((int a, int b) => { a+b;});
  IAdd testing = mockadd.Object;

因为 add 方法是无效的,它不会返回任何值来断言。我如何断言此设置?

最佳答案

为什么要使用模拟?它用于验证 SUT(被测系统)与其依赖项(应该被模拟)正确交互。正确的交互意味着使用正确的参数调用正确的依赖成员。

您应该永远不要断言 mock 返回的值。这是与生产代码无关的虚拟值。您应该断言的唯一值是 SUT 返回的值。 SUT 是您应该为其编写断言的唯一对象。

此外,您应该永远不要测试接口(interface)。因为没有什么可以测试的。接口(interface)只是一个 API 描述。它没有实现。所以,停下来想一想你在这里测试的是什么代码?这是在您的应用程序中执行的真实代码吗?

因此,您应该模拟IAdd 接口(interface),仅用于测试使用IAdd 接口(interface)的对象。

关于c# - 最小起订量测试无效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15062403/

相关文章:

c# - 使用组合框 MVVM 绑定(bind)枚举描述

c# - 使用 C# 和反射对类的属性进行单元测试

python - IntEnum 返回 AttributeError : can't set attribute

nunit - 如何让 DevExpress CodeRush 使用 tm 模板而不是 VS 2010 中的 Microsoft 测试方法创建 NUnit 测试方法

c# - xml 中具有相同元素名称的下一个节点

c# - C# 的命名准则

安装测试适配器后,NUnit 单元测试未显示在测试资源管理器中

c# - 'await' 有效,但调用 task.Result 挂起/死锁

带小数位的 C# 计算

perl - 是否可以在 perl 中模拟或修补输入参数?