2010-11-25 2 views
2

웹 사이트에 대해 일부 작업을 수행하는 2010 코딩 UI 테스트가 있습니다. 레코드 당 한 번 전체 메서드를 루프하는 "테스트 메서드"에 데이터 소스를 추가 할 수 있습니다.테스트 메서드 (VS 2010 코딩 된 UI 테스트) 대신 UIMap 메서드에 데이터 소스를 추가하는 방법

하지만 실제로하고 싶은 것은 UIMap에서 단 하나의 녹음 된 메서드 인 테스트의 일부만 반복하는 것입니다.

은의이 시험 방법은 다음과 같은 형태 가정 해 봅시다 :

//[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\TestCommunities.xml", "Community", DataAccessMethod.Sequential), DeploymentItem("Tests\\WebTests\\DataSources\\TestCommunities.xml"), TestMethod]   
public void LoginCreateCommunities() 
    { 
     this.UIMap.LoginAdmin(); 
     //this.UIMap.CreateCommunityParams.UIItem0EditText = TestContext.DataRow["CommunityName"].ToString(); 
     this.UIMap.CreateCommunity(); 
     this.UIMap.LogoffClose(); 
    } 

그건 단지 내가 루프 데이터 소스를하려는 UIMap.CreateCommunity(). 데이터 소스의 레코드 당 3 가지 메소드를 모두 실행하지 않기를 바란다. 데이터 소스를 테스트 메소드 (위에서 주석 처리 한 부분)에 첨부 할 때 일어나는 일이다.

여기에서 내가하려는 것을 달성 할 수있는 방법이 있습니까?

감사합니다.

+0

나를 보자, 나는이 다른 방법을 물어 볼게요 ...없이 모든 부분을 손으로 코딩하고 싶습니다. 코드 된 UI 테스트 메서드의 부분 만 루프 할 수 있습니다 (코드 된 테스트 메서드 전체가 아님). – Jeff

답변

0

ClassInitialize 및 ClassCleanup 메서드를 사용해야합니다. # region에 추가합니다. 하단에 추가 테스트 속성 영역이 있습니다. 같은 당신을 위해 뭔가를 보이는 것 : 당신이 당신의 codedUI 클래스에 새로운 UIMap을 정의 할 필요가 첫번째

#region Additional test attributes 

    [ClassInitialize] 
    static public void ClassInit(TestContext context) 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.LoginAdmin(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 

    } 


    [ClassCleanup] 
    static public void ClassCleanup() 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.LogoffClose(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 
    } 

    #endregion 
+0

'Playback.Initialize()'와'Playback.Cleanup()'이하는 일에 대해 친절하게 설명해 주시겠습니까? 'Initialize'에 대한 호출이'IsInitialized' 속성에 조건부가되어야합니까? 액션이 끝난 직후에'Playback.Cleanup()'이 호출되는 이유는 무엇입니까? –

+1

"sharedTest"는 무엇입니까? – atiyar

+0

이것은 이전 답변이지만 Playback.Initialize() 및 Playback.Cleanup()은 테스트 전후에 실행됩니다. 이 경우 'sharedTest'는 제가 호출하는 또 다른 테스트 메소드입니다. 내 대답을 쓴 이후로 Visual Studio 2012 대신 Selenium WebDriver (C#)를 사용하는 것으로 옮겨온 지 2 년이 지났습니다. 미안하다면 도움이되지 않습니다. – kgodoy

0

[CodedUITest] 
public class CodedUITest1 
{ 
    static private UIMap sharedTest = new UIMap(); 

    .... 

    [ClassInitialize()] 
    static public void ClassInit(TestContext context) 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.RecordedStartApp(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 
    } 

    [ClassCleanup()] 
    static public void ClassCleanup() 
    { 
     Playback.Initialize(); 
     try 
     { 
      sharedTest.RecordedCloseApp(); 
     } 
     finally 
     { 
      Playback.Cleanup(); 
     } 
    } 
} 
관련 문제