2014-06-19 5 views
1

xUnit 및 Watin을 사용하는 테스트 사례가 있습니다. 클래스의 모든 팩트를 IE의 동일한 인스턴스로 공유하려면 싱글 톤 클래스를 만들어서 첫 번째 테스트에서 새 IE 인스턴스가 시작되고 다음 테스트에서는 동일한 인스턴스가 사용됩니다.xUnit 및 Watin 정리

사실이 모두 끝나면 IE 인스턴스는 계속 실행 중입니다. 클래스 완성 테스트를 마친 후 IE를 닫는 방법에 대해 궁금합니다.

답변

3

테스트를위한 클래스는 IUserFixture 인터페이스를 구현해야합니다.
나는 xunit 생명주기 모델을 사용자의 요구를 해결하고 보여줍니다 예제를 제공합니다 :

public class MyTestClass : IUseFixture<WatinFixture>, IDisposable 
{ 
    private WatinFixture _data; 

    public void SetFixture(WatinFixture data) 
    { 
     _data = data; 
     Console.WriteLine("setting data for test"); 
    } 

    public MyTestClass() 
    { 
     Console.WriteLine("in constructor of MyTestClass"); 
    } 

    [Fact] 
    public void Fact1() 
    { 
     Console.WriteLine("in fact1. IE is '{0}'", _data.ReferenceToIE); 
     // use _data.ReferenceToIE here 
    } 

    [Fact] 
    public void Fact2() 
    { 
     Console.WriteLine("in fact2. IE is '{0}'", _data.ReferenceToIE); 
     // use _data.ReferenceToIE here 
    } 

    public void Dispose() 
    { 
     Console.WriteLine("in Dispose of MyTestClass"); 
    } 
} 

public class WatinFixture : IDisposable 
{ 
    public string ReferenceToIE = null; 

    public WatinFixture() 
    { 
     // start IE here 
     Console.WriteLine("Starting IE ..."); 
     ReferenceToIE = "If you see this string - then browser reference is not empty."; 
    } 

    public void Dispose() 
    { 
     // close IE here 
     Console.WriteLine("Closing IE ..."); 
     ReferenceToIE = null; 
     } 
    } 

출력 :

이 MyTestClass
설정 데이터 생성자에서 IE ...
시작 테스트를 위해
사실 1. IE는 '이 문자열이 표시되면 브라우저 참조가 비어 있지 않습니다.' fact2에 대한 테스트
MyTestClass
설정 데이터의 생성자 MyTestClass
폐기에
. IE는 '이 문자열이 표시되면 브라우저 참조가 비어 있지 않습니다.' MyTestClass IE 닫기
의 폐기에
...

+0

나는 xUnit의의 문서에서 유사한 코드를 읽을 수 있지만 라이프 사이클을 보여주는 당신의 예제처럼 명확하지 않다. 이제는 브라우저의 게으른 인스턴스화를 확인해야하지만 싱글 톤을 구성 할 필요가 없습니다. – ZZZ