2017-03-22 39 views
-2

需要在一些配置文件鍵的幫助下,在相同的測試類中執行Moq單元測試和實際單元測試。 是否可以使用基於配置值分配的相同對象執行此操作?實現相同類別的Moq單元測試和實際單元測試方法

意思是如果配置文件鍵是「Moq」,那麼Moq單元測試將運行,如果不是,實際單元測試將以相同的測試類和相同的方法運行。

+0

我不清楚你在問什麼。我從來沒有聽說過Moq單元測試和「實際」單元測試之間的區別,你能詳細說明一下嗎? –

+0

你應該更具體。我真的不知道你在說什麼。 –

+0

對不起。意思是有兩種方法可以實現單元測試 1.使用某些框架,我正在使用的Moq來嘲笑結果。 2.實際單元測試調用,它將直接調用數據庫來獲取實際數據。 我想實現兩個相同的測試方法,可以使用配置值進行管理。 意思是如果我設置1,那麼Moq單元測試應該發生並且 如果我設置2實際單元測試應該發生。 – ashwinrajagopal

回答

0

是的,你可以,但可能這不是最好的做法。 例如,

public class MyClass 
{ 
    IDependency _d; 
    public MyClass(IDependency d) 
    { 
     _d = d; 
    } 
} 
public class Dependency : IDependency 
{ 
} 

在測試類,我能有這樣的事情:

[TestClass] 
public class MyClassTests 
{ 
    MyClass _sut; 
    Mock<IDependency> _mockDependency; 
    Dependency _realDependency; 
    [TestInit] 
    public void Init() 
    { 
     var shouldUseMock = ConfigurationManager.AppSettings["key"]; 
     if(shouldUseMock) 
     { 
     _mockDependency = new Mock<IDependency>(); 
     _sut = new MyClass(_mockDependency.Object) 
     } 
     else 
     { 
     _realDependency = new Dependency(); 
     _sut = new MyClass(_realDependency); 
     } 
    } 
} 

的問題將根據不同情況來設定的預期,它使測試類更難保持。您應該創建兩個測試,一個用mock進行實際單元測試,另一個用真正的實現進行集成測試。