40

以下のクラスの単体テストを書きたいと思います。
名前が「MyEntity」以外の場合、mgr は空白にする必要があります。
Negative Unit test
Manager のプライベート アクセサーを使用して、名前を "Test" に変更して、mgr が null になるようにします。そして、mgr の値を確認します。これを実現するには、静的コンストラクターを明示的に呼び出したいのですが、静的コンストラクターを呼び出すときに

Manager_Accessor.name = "Test"
typeof(Manager).TypeInitializer.Invoke(null, null); 

name は常に "MyEntity" に設定され、name を "Test" に設定して静的コンストラクターを呼び出す方法。

public class Manager
{        
        private static string name= "MyEntity";

        private static object mgr;

        static Manager()
        {
            try
            {
                mgr = CreateMgr(name);
            }
            catch (Exception ex)
            {
                mgr=null;
            }
        }
}
4

4 に答える 4

3

クラスに静的メンバーがある場合 (存在する必要があります。そうでない場合、静的コンストラクターはあまり機能しません)、静的コンストラクターを明示的に呼び出す必要はありません。

静的コンストラクターを呼び出したいクラスにアクセスするだけです。例えば:

public void MainMethod()
{
    // Here you would like to call the static constructor

    // The first access to the class forces the static constructor to be called.
    object temp1 = MyStaticClass.AnyField;

    // or
    object temp2 = MyClass.AnyStaticField;
}
于 2016-09-14T19:55:29.030 に答える