[英]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.