C#の単体テスト、静的メソッド(静的)メソッドプライベート(非公開)とユニットテスト

反射使い方:

/// <まとめ> 
        ///静的メソッドを呼び出す
        /// </要約> AKF 
        /// <PARAM NAME = "T">クラスのフルネーム</ PARAM> 

        /// <paramNameに= "strMethod">メソッド名</ PARAM> 

        /// <paramNameに= "aobjParams">パラメータ</ PARAM> 

        /// <戻る>関数の戻り値</戻り> 

        パブリック静的オブジェクトRunStaticMethod(System.TypeをT、strMethodのString [] aobjParamsオブジェクト)
        { 

            のBindingFlags EFLAGS = 

            BindingFlags.Static | BindingFlags.Public | 

             BindingFlags.NonPublic; 

            runMethodのようになり(T、strMethod、戻り

             ヌル、aobjParams、EFLAGS)を; 

        } 

        /// <まとめ>

        メソッド呼び出し///の例

        /// </要約>

        /// <PARAM NAME = "T">类全名</ PARAM> 

        /// <paramNameに= "strMethod">方法名</ PARAM> 

        /// <paramNameに= "objInstance">类的实例</ PARAM > 

        /// <paramNameに= "aobjParams">参数表</ PARAM> 

        /// <戻る>函数返回值</戻り> 



        パブリック静的オブジェクトRunInstanceMethod(のSystem.Typeさt、ストリングstrMethod、

         objInstanceオブジェクト、[] aobjParamsオブジェクト)
        { 

            のBindingFlags EFLAGS = BindingFlags.Instance | BindingFlags.Public | 

             BindingFlags.NonPublic; 

            runMethodのようになり(T、strMethod、戻り

             objInstance、aobjParams、EFLAGS)を、





         strMethodは、objInstance、オブジェクト[] aobjParams、のBindingFlags EFLAGS)オブジェクト
        { 

            METHODINFO mを、

            試す
            { 

                M = t.GetMethod(strMethod、EFLAGS)。

                (M == NULL)の場合
                、{ 

                    新しいArgumentExceptionがをスロー( '+ "方法はありません" 

                     strMethod + '+ t.ToString()+ "'タイプで、" "'。"); 

                } 

                オブジェクトobjRet = m.Invoke(objInstance、aobjParams)。

                objRetを返します。

            } 

            キャッチ
            { 

                投げます。


  

試験例時:

ウィンドウをForm1に2つの方法がある場合は、それぞれ、静的メソッドとプライベートインスタンスは、次のように:

プライベート静的ストリングStaticMethod(ストリングS、I INT)
        { 


            戻りS + iは、
        
        } 


        プライベートストリングInstanceMethod(ストリングS、I INT)
        { 


            戻りS + iは、

        }

  

 

テストコードを呼び出すことができます。

 

【のtestMethod】
公共ボイドTestInstanceMethod()
{

Form1 F =新しいForm1の();
//f.msg(f);
//f.button1_Click(null、NULL);

文字列RET = "" + RunInstanceMethod(typeof演算(Form1に)、 "InstanceMethod"、F、新しいオブジェクト[] { "123"、123})。

Assert.AreEqual(RET、 "123123");

}


【のtestMethod】
公共ボイドTestStaticMethod()
{

文字列RET = "" + RunStaticMethod(typeof演算(Form1に)、 "StaticMethod"、新しいオブジェクト[] { "123"、123})。

Assert.AreEqual(RET、 "123123");


}

 

おすすめ

転載: www.cnblogs.com/wgscd/p/11586371.html