2017-02-23 4 views
0

xunitを使用してExample1ビューモデルのテストケースを書く必要があります。このビューモデルは、Example2ビューモデルを初期化します。しかし、Example2はコンストラクタ内にstaticメソッドを含み、その静的メソッドには1つの静的変数が含まれています。ラッパークラスまたは依存性注入を使用して静的メソッドと静的変数のテストケースを書く方法

Example1のテストケースを作成した場合、テストケースはすべてのテストケースを実行している間に失敗しましたが、選択したテストケースを実行している間に失敗しました。 Example2の内部に静的メソッドを使用しているためです。

静的メソッドと変数を非静的に変更しようとしましたが、その例外はSystem.TypeInitializationException例外をスローします。

誰でも説明することができますか?どのように私はこれを達成することができます静的なキーワードを削除せずに?誰でも指導をしてもらえますか?

例:

public class Example1 
{ 
    public Example1(Example2 example2) { ... } 
} 

public class Example2 
{ 
    public Example2() 
    { 
     SomeStaticMethod() //static method inside the constructor 
    } 

    static SomeStaticMethod() 
    { 
     logPath = ""; //logPath is the static variable which is declared in another static class 
    } 
} 
+0

あなたは、Visual Studioのどの版を持っていますか?なぜそれが 'xunit'でなければならないのですか? – zaitsman

答えて

0

あなたは、単にコンストラクタでExample2のインスタンスを渡す必要がある場合は、それは非常に簡単です:

namespace Tests 
{ 
    using Xunit; 

    using XunitSample; 

    public class Class1 
    { 
    [Fact] 
    public void Example1_Test() 
    { 
     var ex2 = (Example2)System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeof(Example2)); 

     var target = new Example1(ex2); 

     Assert.NotNull(target); 
    } 
    } 
} 
関連する問題