다음을 통해 공유


방법: 테스트 실행에 시간 제한 설정

업데이트: 2007년 11월

테스트 실행에 적용될 시간 제한을 설정할 수 있습니다. 예를 들어, 테스트 작업실에서 작업할 때 테스트 실행을 특정 시간까지 완료해야 하는 경우 시간 제한을 설정할 수 있습니다.

시간 제한에 사용되는 또 다른 시나리오로는 응답하지 않는 코드가 있습니다. 테스트에서 응답하지 않는 코드 섹션이 발견되면 테스트 실행이 다음 테스트를 계속할 수 있도록 테스트 제한 시간 및 테스트 실행 제한 시간을 사용하여 개별 테스트를 종료할 수 있습니다.

시간 제한을 설정하는 방법은 다음과 같은 두 가지입니다.

  • 테스트 실행 구성에서 테스트 및 테스트 실행에 대한 제한 시간 값을 설정합니다. 테스트 실행 구성에 대한 자세한 내용은 방법: 테스트 실행 구성 지정방법: 테스트 실행 구성 적용을 참조하십시오. 모든 실행 구성 설정과 마찬가지로 제한 시간 설정은 해당 실행 구성이 활성 상태인 경우 테스트를 실행할 때마다 적용됩니다.

  • 개별 테스트에 대한 속성을 설정하여 테스트별 제한 시간 값을 재정의할 수 있습니다. 테스트 실행 제한 시간 값은 재정의할 수 없습니다.

특정 테스트 종류의 경우 테스트 제한 시간을 설정할 수 없습니다. 수동 테스트에는 테스트 제한 시간이 적용되지 않습니다. 그러나 테스트 실행 제한 시간은 테스트 실행이 수동 테스트를 포함하더라도 항상 적용됩니다.

테스트 및 테스트 실행에 시간 제한을 설정하면 다음과 같은 결과가 발생합니다.

  • 테스트 실행의 지속 시간이 제한 시간 값에 도달하면 일부 테스트가 실행되지 않았더라도 해당 테스트 실행이 중단됩니다.

  • 개별 테스트의 지속 시간이 제한 시간 값에 도달하면 해당 테스트의 실행이 중지되고 테스트가 시간 초과로 표시됩니다. 그러면 다음 테스트부터 테스트 실행이 계속됩니다.

초기화 메서드의 테스트 제한 시간에 대한 영향

테스트 실행에는 AssemblyInitializeAttribute 메서드 및 ClassInitializeAttribute 메서드가 포함될 수 있습니다. 이러한 메서드를 정의하면 메서드가 완료되어야 하는 일정 시간이 지정된 후 테스트 실행의 첫 번째 테스트가 시작됩니다.

초기화 메서드에서 사용하는 시간은 첫 번째 테스트에서 사용되는 시간에 추가됩니다. 이를 다음과 같은 용어를 사용하는 수식으로 표현할 수 있습니다.

  • Dt = 총 지속 시간

  • Dr = 하나의 테스트가 실행되는 시간

  • I = 어셈블리 및 클래스의 초기화 메서드

  • Tn = 테스트 실행 내 임의의 위치에서 실행되는 테스트

  • T1 = 테스트 실행 내 첫 번째 위치에서 실행되는 테스트

다음은 첫 번째 테스트 이후의 모든 테스트에 적용됩니다.

Dt[Tn] = Dr[Tn]

다음과 같은 항목도 있습니다.

Dt[T1] = Dr[T1] + D[I]

실행되는 첫 번째 테스트에는 테스트별 제한 시간 값이 할당되어 있을 수 있습니다. 이 경우 초기화 시간은 첫 번째 테스트에 적용되어 있는 시간 제한까지 계산되므로 이로 인해 해당 테스트가 실패할 수 있습니다.

참고:

그러나 이 제한으로 인해 실패할 수 있는 것은 첫 번째 테스트뿐이며 테스트 실행의 후속 테스트는 영향을 받지 않습니다.

테스트 실행에 초기화 메서드가 포함되어 있는 경우 테스트 메서드와 초기화 메서드의 예상 실행 시간을 합한 것보다 큰 제한 시간을 각 테스트에 적용하면 이 제한을 해결할 수 있습니다. 이 작업은 테스트별로 수행해야 합니다. 단위 테스트의 경우 테스트가 실행되는 순서가 확정되어 있지 않으므로 첫 번째로 실행되는 테스트를 예측할 수 없습니다.

정리 메서드의 테스트 실행 제한 시간에 대한 영향

테스트 실행에는 AssemblyCleanupAttribute 메서드 및 ClassCleanupAttribute 메서드가 포함될 수 있습니다. 이러한 메서드가 완료되면 테스트 실행은 종료됩니다.

테스트 실행에는 제한 시간 값이 할당되어 있을 수 있습니다. 정리 메서드에서 사용하는 시간은 테스트 실행에서 사용되는 총 시간에 추가됩니다. 즉, 정리 시간은 전체 테스트 실행에 대해 적용한 시간 제한까지 계산되므로 이로 인해 테스트 실행 시간이 초과될 수 있습니다.

테스트 실행 제한 시간을 설정하려면

  1. 솔루션 탐색기를 엽니다.

  2. 솔루션의 솔루션 항목 폴더에서 테스트 실행 구성 파일을 두 번 클릭합니다.

    테스트 실행 구성 대화 상자가 열립니다.

  3. 테스트 시간 제한을 클릭합니다.

  4. 총 실행 시간이 다음을 초과하면 테스트 실행 중단:의 확인란을 선택합니다.

  5. 테스트 실행 제한 시간 값(시, 분, 초)을 설정합니다.

  6. 저장을 클릭한 다음 닫기를 클릭합니다.

    이 설정을 적용하려면 편집한 테스트 실행 구성이 활성 실행 구성이어야 합니다. 자세한 내용은 방법: 테스트 실행 구성 적용을 참조하십시오.

테스트 실행 구성을 사용하여 테스트별 제한 시간을 설정하려면

  1. 솔루션 탐색기를 엽니다.

  2. 솔루션의 솔루션 항목 폴더에서 테스트 실행 구성 파일을 두 번 클릭합니다.

    테스트 실행 구성 대화 상자가 열립니다.

  3. 테스트 시간 제한을 클릭합니다.

  4. 실행 시간이 다음을 초과하면 개별 테스트가 실패한 것으로 표시:의 확인란을 선택합니다.

  5. 테스트별 제한 시간 값(시, 분, 초)을 설정합니다.

  6. 저장을 클릭한 다음 닫기를 클릭합니다.

    이 설정을 적용하려면 편집한 테스트 실행 구성이 활성 실행 구성이어야 합니다. 자세한 내용은 방법: 테스트 실행 구성 적용을 참조하십시오.

테스트 속성을 사용하여 테스트별 제한 시간을 설정하려면

  1. 테스트 목록 편집기 또는 테스트 뷰 창을 엽니다.

  2. 테스트를 클릭한 다음 F4 키를 누릅니다.

    그러면 속성 창이 열리고 해당 테스트에 대한 속성이 표시됩니다.

  3. 시간 초과 속성에 대한 값(시, 분, 초)을 설정합니다.

    참고:

    수동 테스트에 대한 제한 시간 값은 제한 없음입니다. 이 값은 변경할 수 없습니다.

    이 테스트에 한해서 사용자가 설정한 값이 테스트 실행 구성에서 설정된 테스트별 제한 시간 값을 재정의합니다. 테스트 실행 제한 시간 값에는 영향을 주지 않습니다.

단위 테스트 특성을 사용하여 테스트별 제한 시간을 설정하려면

  1. 단위 테스트의 소스 코드 파일을 엽니다.

  2. 테스트의 TestMethod 특성을 찾습니다.

  3. Timeout 특성 및 제한 시간 값을 나타내는 매개 변수를 추가합니다.

    제한 시간 값은 밀리초로 표시됩니다.

    예제(Visual C#):

    [TestMethod(), Timeout(80)]
    public void MyTestMethod()
    
    {
    // test code
    }
    

    예제(Microsoft Visual Basic):

    <TestMethod(), Timeout(80)> _
    Public Sub MyTestMethod()
    
    ' test code
    
    End Sub
    

    이 테스트에 한해서 사용자가 설정한 값이 테스트 실행 구성에서 설정된 테스트별 제한 시간 값을 재정의합니다. 테스트 실행 제한 시간 값에는 영향을 주지 않습니다.

참고 항목

작업

방법: 테스트 실행 구성 지정

방법: 테스트 실행 구성 적용