1

C# で記述されたテスト プロジェクトがいくつかあります。テスト プロジェクトを参照し、すべてのテスト メソッド名を動的に検出する必要がある新しいアプリケーション (コンソールまたは WPF アプリケーション) を作成する必要があります。

これまでのところ、すべてのテスト プロジェクトですべてのメソッドとプロパティの名前を見つけることができましたが、テスト メソッドの名前だけを除外することはできません。すべてのテスト メソッドには [TestMethod] 属性があるため、TestMethodAttribute を使用してテスト メソッドを除外できるようにしたいと考えていました。ただし、それは正しく機能しません。ここにコードの抜粋があります

        MethodInfo[] methodInfos = typeof(CodedUITest2).GetMethods();
        Array.Sort(methodInfos, 
                   delegate(MethodInfo methodInfo1, MethodInfo methodInfo2)
                    {return methodInfo1.Name.CompareTo(methodInfo2.Name);});

        foreach (MethodInfo mi in methodInfos)
        {
            object[] al = mi.GetCustomAttributes(typeof(Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute), false);

            if (al != null)
                Console.WriteLine(mi.Name);

        }

プログラムの出力は CodedUITestMethod3 Equals get_TestContext GetHashCode GetType set_TestContext ToString です。

したがって、次のステートメントを削除しても、結果は同じです。

object[] al = mi.GetCustomAttributes(typeof(Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute), false); if (al != null)

だから私の質問は、すべてのメソッド名を見つけた後、結果をフィルタリングしてテストメソッドのみを取得する方法です。この例では、「CodedUITestMethod3」のみを出力する必要がありますか?

4

2 に答える 2