2012-03-02 3 views
1

NUnit으로 셀렌 테스트를 작성하고 깨끗한 테스트 디자인 (각 테스트마다 하나씩 테스트)을 유지하기 위해 최선을 다하고 있습니다. 그래서 나는 이와 같은 것을 얻었습니다.NUnit 셀레늄 구조

[TestFixture] 
public class SomeTest 
{ 
    IWebDriver driver; 

    [Setup] 
    public void Setup() 
    { 
     driver = new InternetExplorerDriver(); 
    } 

    [Test] 
    public void Test1() 
    { 
    } 

    [Test] 
    public void Test2() 
    { 
    } 

    [Teardown] 
    public void Teardown() 
    { 
     driver.Close(); 
    } 
} 

이제 괜찮습니다.하지만 테스트 횟수가 늘어날수록 상황이 현저하게 느려집니다. 각 테스트마다 전체 브라우저를 시작하고 중지하는 것이 병목입니다.

마지막 테스트까지 브라우저를 열어 둘 수있는 방법은 없습니까? 아니면 더 나은 접근 방식/디자인일까요?

답변

3

만에 하나 당신이 [TestFixtureSetUp] [TestFixtureTearDown] 대신 [설정]의 사용할 수있는 고정 당 브라우저와 [분해]가 나타납니다 : 물론이의

[TestFixture] 
public class SomeTest 
{ 
    IWebDriver driver; 

    [TestFixtureSetUp] 
    public void Setup() 
    { 
     driver = new InternetExplorerDriver(); 
    } 

    [Test] 
    public void Test1() 
    { 
    } 

    [Test] 
    public void Test2() 
    { 
    } 

    [TestFixtureTearDown] 
    public void Teardown() 
    { 
     driver.Close(); 
    } 
} 

이기구를 통해 도움이되지 않습니다,하지만 여전히 성능을 향상시킬 수 있습니다.

+0

Perfect! 참고 : Visual Numerit (Visual Studio 용)에서는 작동하지 않지만 기본 NUnit 테스트 러너에서는 예상대로 작동합니다. – prestomanifesto

+1

TestDriven.NET, ReSharper 및 NCrunch와도 작동합니다. –

+0

실제로 TestFixtureSetUp이고 TestFixtureSetup이 아니므로 해당 항목을 편집했습니다. 고치다. – Nuzzolilo

0

'test'라는 이름으로 하나의 메소드 만 만들 수 있습니다. 이 테스트 메소드에는 다른 메소드 호출이 포함됩니다 (이름에 'test'가 없음). 그 다른 방법은 당신의 테스트 케이스가 될 것입니다. 이름에 'test'가있는 모든 메소드는 열기 및 닫기 브라우저를 발생시킵니다. 위의 솔루션을 사용하면 브라우저를 한 번만 열고 모든 테스트 사례를 한 번에 하나씩 수행합니다.

위해