簡體   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