Как найти все методы тестирования (кодированный пользовательский интерфейс) динамически?
У меня есть несколько тестовых проектов, написанных на C#. Мне нужно создать новое приложение (может быть консоль или приложение WPF), которое должно ссылаться на тестовые проекты и определять имена всех тестовых методов динамически.
До сих пор мне удавалось выяснить все имена методов и свойств во всех тестовых проектах, но я не могу отфильтровать только имена тестовых методов. Я прыгал, чтобы иметь возможность отфильтровать методы тестирования с помощью TestMethodAttribute, потому что все методы тестирования имеют атрибут [TestMethod]. Однако это не делает работу правильно. Вот извлечение кода
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); если (al!= null)
Таким образом, мой вопрос после нахождения всех имен методов, как можно отфильтровать результат и получить только тестовый метод, в этом примере он должен печатать только "CodedUITestMethod3"?
2 ответа
Следующий код работает на моей коробке,
Type type = typeof(CodedUITest2);
IEnumerable<MethodInfo> testMethods = type.GetMethods(BindingFlags.Instance | BindingFlags.Public).Where(m => m.IsDefined(typeof(TestMethodAttribute)));
На сайте MSDN я нашел ссылку на следующую часть параметров командной строки VSTest.Console.exe. Может быть, это поможет?
http://msdn.microsoft.com/en-us/library/jj155796.aspx
/ ListTests: [имя файла] Выводит список обнаруженных тестов из данного тестового контейнера.