2017-03-22 18 views
-2

Moqユニットテストと実際のユニットテストは、同じテストクラスで、いくつかのコンフィグファイルキーの助けを借りて実装する必要があります。 設定値に基づいて割り当てられる同じオブジェクトを使用することは可能ですか?同じクラスのMoqユニットテストと実際のユニットテストメソッドを実装する

設定ファイルキーが "Moq"の場合、Moqユニットテストが実行され、実際のユニットテストが実行されない場合、同じテストクラスと同じ方法で実行されます。

+0

あなたが求めていることは私には分かりません。私はMoqの単体テストと "実際の"単体テストの区別は聞いたことがありません。あなたは精緻化できますか? –

+0

あなたはもっと具体的でなければなりません。私は本当に何を話しているのか分かりません。 –

+0

申し訳ありません。ユニットテストを実装するには2通りの方法があります。 1.私が使用しているMoqという特定のフレームワークを使用して結果を嘲笑します。 2.実際のユニットテストコール。実際のデータを取得するためにデータベースを直接呼び出します。 設定値を使って管理できる同じTestメソッドで両方を実装したいと思います。 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); 
     } 
    } 
} 
問題は、さまざまな状況に基づいて、期待を設定され、それはへのテストクラスがはるかに困難になり

維持する。むしろ、2つのテストを作成する必要があります。実際のユニットテストはmockで行い、他の種類の統合テストは実際の実装で行います。

関連する問題