2011-11-11 1 views
0

정확한 목적으로 here과 같이 AssemblyInitialize/AssemblyCleanup 특성을 Microsoft Visual Studio 2010에 구현하려고합니다. 이 링크는 코드를 구현하기 위해 따라야 할 프로세스를 설명합니다.MSVS 2010의 CodedUITest에 AssemblyInitialize/AssemblyCleanup을 구현하려면 어떻게해야합니까?

그 목적을 간략하게 요약하면 솔루션에서 실행 한 codedUITests와 마지막 codeUITest 이후에 실행될 코드 블록에 관계없이 테스트를하기 전에 바로 실행될 초기 코드 블록을 만드는 것입니다. 완료되었습니다. 예 : 특정 응용 프로그램을 열고 나서 해당 응용 프로그램에서 시작하여 모든 순서로 실행되는 일련의 codedUITest를 실행 한 다음 모든 작업이 완료된 후에 응용 프로그램을 닫습니다. 이것은 각 codedUITest에 대한 응용 프로그램을 열거 나 닫는 것보다 더 효율적입니다.

내가 이해할 수없는 부분은 코드 하단에 표시된 코드를 배치해야하는 위치입니다 (아래 그림 참조). 나는 'public partial class UIMap'바로 아래에있는 모든 코드를 붙 였고 코드는 CodedUITests의 전체 그룹을 샌드위치하는 대신 각 CodedUITest 전후에 'OpenApplication'및 'CloseApplication'명령을 실행한다는 점만 제외하고 실행됩니다.

코드를 올바르게 구현하려면 어떻게해야합니까?

업데이트 :

나는 지난 밤에 AssemblyI/C를 발견하고 나는 그것이 작동하도록 코드를 삽입 할 위치를 그림을 시도 3 시간을 보냈다. 그때 특정 시험 방법의 시작 부분에 AssemblyInitialize를 넣을 경우)

1 아직 실행되지 않을 것 - 그것은 나에게 말을 몇 가지 오류를주고 있었다 그 UIMap.OpenWindow()와 UIMap.CloseWindow() 메소드 정적 일 필요가 과 나는 정적으로 만드는 방법을 알아낼 수 없습니다.

2) AssemblyI/C가있는 특정 [TestMethod]가 테스트 세트에 있어야하지 않습니까? 내 상황에는 12 개가 있습니다 CodedUITests는 개별적으로 또는 더 큰 숫자로 그룹으로 실행해야하며 AssemblyI/C를 열어야합니다/창을 닫으려면 나는 테스트입니다.

답변

13

잘못된 클래스에 메서드를 추가했습니다. UIMap 부분 클래스에 넣으면 모든 테스트를 수행하는 것처럼 들리는 새로운 UIMap 인스턴스를 만들 때마다 런타임에서 이러한 메서드를 실행하도록 런타임에 지시합니다.

ClassInitialize/ClassCleanup 메서드의 요점은 테스트 메서드가 포함 된 클래스에 해당 메서드를 추가하는 것입니다. TestClass 속성으로 장식 된 클래스가 하나 이상 있어야합니다.이 속성에는 TestMethod 속성으로 장식 된 메서드가 하나 이상 있습니다. 이 클래스는 ClassInitializeClassCleanup 속성이 적용되는 클래스입니다. 이러한 메소드는 프로젝트에있는 각각의 TestClass에 대해 한 번만 실행됩니다.

AssemblyInitializeAssemblyCleanup 속성을 대신 사용할 수도 있습니다. 주어진 어셈블리에는 이러한 메소드 중 하나만있을 수 있으며, 클래스의 테스트 메소드 전후에 각각 실행됩니다.


UPDATE : AssemblyInitialize/정리가 TestClass 속성이 클래스에있을 필요가 있지만, 어느 하나 중요하지 않습니다. 각 속성을 가진 단일 메소드는 어셈블리에서 테스트가 실행되기 전이나 후에 실행됩니다. 그것은 시험 방법 일 수 없다. 정적 메소드이어야하며 "테스트"로 간주되지 않습니다.

+0

응답 주셔서 감사합니다, 나는 꽤 AssemblyInitialize/정리 코드 및 ClassInitialize/정리 코드를 사용해야 할 것이라고 확신합니다. 그에 따라 내 질문을 업데이트하겠습니다. – ChrisM

관련 문제