繁体   English   中英

C# 中接口的工作流程

[英]Workflow for interfaces in C#

我慢慢开始了解 C# 的语法基础知识,但编程远不止这些。 我一直想知道如何在不妨碍编码过程的情况下有效地使用接口。

通过为 class 设置接口,您就是在做出承诺。 在实现接口的所有成员之前,代码不会编译。 这可能会给测试程序带来不便,不得不暂时禁用接口,或者为所有使用它的类创建伪劣的占位符方法。 对我来说,这两者都不是一个好习惯。 我当然可以只在之后实现接口,但是那样不会破坏目的吗? 显然我错过了一些东西。

简短的回答 - >是你必须实现类中的所有接口成员。

基本上,Visual Studio 或其他工具都提供了自动实现接口,该接口将实现“抛出新的 NotImplementedException()”。 所以你可以测试你的行为并实现其他成员。

接口用于抽象以及强制实现。

要在没有正确实现所需方法的情况下测试接口,我建议您参考 NullObject 模式和“MOQ”的组合。

如果您创建接口的最小起订量,则不需要定义不调用的方法。 Moq 将在运行时为您的接口有效地创建一个空对象 function。

如果您不想使用 MOQ,您可以自己为您的接口创建一个“NullObject”模式,然后对所有方法简单地使用“无操作”,然后一次实现一个。

我建议在单元测试设置中使用 MOQ,因为无论如何您都应该这样做,并且应该始终对您的实现进行单元测试,以用于回归测试。

public interface IExample {
   int ExampleMethod1();

   void DoStuff();
}

public class UnitTest{
   public method Test(){
      Mock<IExample> example = new Mock<IExample>();
      example.Setup(mock => mock.ExampleMethod1()).Returns(1);


      var actualResult = example.ExampleMethod1();
      Assert.AreEqual(1, actualResult);
}
}

这个单元测试应该运行。

暂无
暂无

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

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