2009-06-19 2 views
4

단위 테스트를 수행 할 때 [TestClass()]가 [TestMethod()]를 하나씩 실행하도록 알려줄 수 있습니까? (Visual Studio 대신 여러 스레드 시작). 이것은 내 테스트 수업 중 하나 또는 두 가지에만 필요합니다.Visual Studio 2008 단위 테스트 : 하나씩 실행하는 방법?

+0

한번에 모두 테스트하고 싶지 않은 이유는 무엇입니까? –

+1

나는 많은 TestMethod가 있으며 전역 변수 상태를 확인하기 때문에 다른 테스트에 intefere를 원하지 않습니다. –

+0

나는 이걸 궁금해했다 ... –

답변

1

아니요, Visual Studio 2008에서 기본 도구를 사용하여이 작업을 수행 할 방법이 없습니다.

재미있는 구성 코드를 TestInit 메서드에 추가하면 가능합니다. 예를 들어, 모든 테스트 클래스를 다음 기본 클래스에서 파생시킬 수 있습니다.

[TestClass] 
public class ExecuteOneAtTimeBase { 
    private static object s_mutex = new object(); 

    [TestInit] 
    public void TestInit() { 
    Monitor.Enter(s_mutex); 
    } 

    [TestCleanup] 
    public void TestCleanup() { 
    Monitor.Exit(s_mutex); 
    } 
} 

모든 TestMethod 인스턴스는 TestInit 및 TestCleanup 메서드 호출로 괄호로 묶습니다. Monitor.Enter/Exit 콤보를 사용하면 주어진 단위 테스트 메소드가 실행되는 동안 잠금을 유지한다는 것을 보장 할 수 있습니다. 따라서 여러 스레드가 단일 AppDomain에서 동시에 다른 테스트를 실행할 수 없습니다.

테스트 프로세스에서 교착 상태가 발생할 수있는 오류가 있습니다. 하지만 이것이 생산 코드가 아니기 때문에 사소한 우려라고 생각합니다.

0

하나의 TestMethod를 디버깅하거나 실행할 수 있습니다.

  • 디버그에 TestMethod
  • 에 커서를 넣어 : Ctrl 키-R, Ctrl 키-T 또는 테스트 -> 디버그 -> 현재 상황
  • 에서 테스트 실행 : Ctrl 키-R, T 또는 테스트 - > 현재 컨텍스트에서의 실행 -> 테스트
+1

이것은 정말로 내가 원하는 것이 아닙니다. 2000 개의 테스트가 있고 100 개가 1 씩 실행되어야한다면 수동으로하지 않을 것입니다. –

+0

죄송합니다. 질문을 잘못 읽었을 것입니다. –

2

Visual Studio 2008 Team Suite 또는 Tester 버전 중 하나를 사용하는 경우 주문 테스트를 만들고 모든 테스트를 해당 주문 테스트에 추가 할 수 있습니다 .

관련 문제