1

C#으로 작성된 몇 가지 테스트 프로젝트가 있습니다. 테스트 프로젝트를 참조하고 모든 테스트 메소드 이름을 동적으로 발견 할 수있는 새로운 애플리케이션 (콘솔 또는 WPF 애플리케이션 일 수 있음)을 작성해야합니다.모든 테스트 방법 (코드 된 UI)을 동적으로 찾는 방법은 무엇입니까?

지금까지 모든 테스트 프로젝트에서 모든 메서드와 속성 이름을 찾을 수 있었지만 테스트 메서드 이름 만 필터링 할 수는 없었습니다. 모든 테스트 메소드에 [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 이 get_TestContext GetHashCode GetType을 set_TestContext

그래서 나는 다음과 같은 문장을 삭제하면 ToString 같음 이다, 결과는이다 같은.

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

내 질문에 모든 메서드 이름을 찾은 후 어떻게 결과를 필터링하고 테스트 메서드 만 가져올 수 있습니까?이 예제에서는 "CodedUITestMethod3"만 인쇄해야합니까?

답변

1

,

Type type = typeof(CodedUITest2); 
IEnumerable<MethodInfo> testMethods = type.GetMethods(BindingFlags.Instance | BindingFlags.Public).Where(m => m.IsDefined(typeof(TestMethodAttribute))); 
0

MSDN 사이트에서 VSTest.Console.exe 명령 줄 옵션의 다음 부분에 대한 참조를 발견했습니다. 어쩌면이게 도움이 될까요?

http://msdn.microsoft.com/en-us/library/jj155796.aspx

/ListTests : [파일 이름] 주어진 테스트 컨테이너에서 테스트를 발견 나열합니다. 다음 코드는 내 상자에서 작동