다음을 통해 공유


테스트 실행 문제 해결

업데이트: 2007년 11월

테스트 실행이 실패하면 테스트 환경을 검사하여 실패의 원인을 조사할 수 있습니다. 여기에는 테스트 설정 방식과 활성 테스트 실행 구성의 설정에 대한 조사가 포함됩니다. 배포와 관련된 실패와 같은 경우에는 테스트 종류와 무관할 수도 있습니다. 그 외의 경우는 테스트 종류에 따라 조사 방법과 조사할 항목이 결정됩니다. 테스트 종류별로 조사 팁을 보려면 테스트 종류별 정보를 참조하십시오.

테스트를 수반하는 오류는 다음 두 수준에서 보고됩니다.

  • 테스트 수준 오류. 테스트 결과 창을 사용하여 테스트 결과를 두 번 클릭하거나 테스트 결과를 마우스 오른쪽 단추로 클릭한 다음 테스트 결과 정보 보기를 선택할 수 있습니다. 이 경우 테스트 종류에 따라 오류 메시지와 기타 정보(예: 단위 테스트의 경우 스택 추적 정보)가 표시되는 테스트 [정보] 페이지가 나타납니다. 테스트 수준 오류의 예로는 테스트의 시간 제한 한도에 도달할 경우 발생하는 테스트 시간 제한 오류가 있습니다.

  • 실행 수준 오류. 실행 구성 오류가 포함되는 실행 수준의 오류는 테스트 결과 창을 통해 보고됩니다. 실행 수준 오류가 발생하면 테스트 결과 창 상태 표시줄에 링크가 표시됩니다. 이 링크를 클릭하면 테스트 실행 [정보] 페이지에 오류에 대한 자세한 정보가 표시됩니다. 테스트 결과 창 도구 모음의 실행 정보를 클릭하여 테스트 실행 [정보] 페이지를 표시할 수도 있습니다. 실행 수준 오류의 예로는 실행 시간 제한 한도에 도달할 경우 발생하는 실행 시간 제한 오류가 있습니다.

문제가 발생해도 테스트 실행에 실패하지 않을 수도 있습니다. 코드 검사 데이터를 가져오도록 선택한 후 테스트를 실행하면 프로젝트의 빌드 설정에 따라 경고가 발생할 수 있습니다. 자세한 내용은 코드 검사 데이터를 가져올 때 AnyCPU 빌드 설정 사용을 참조하십시오.

배포 오류

자동으로 실행할 수 있는 모든 테스트, 즉 수동 이외의 모든 테스트 종류의 경우 특정 오류가 발생할 수 있습니다. 이러한 오류는 테스트 배포와 관련된 오류인 경우가 많습니다. 테스트를 배포하면 테스트가 포함된 파일이 다른 폴더에 복사됩니다. 이 폴더는 로컬 컴퓨터 상의 위치이거나 원격 컴퓨터 상의 위치일 수 있습니다. 자세한 내용은 테스트 배포를 참조하십시오.

예를 들어, 단위 테스트의 경우 테스트 프로젝트에서 빌드된 .dll 파일이 배포해야 할 파일입니다. 이 이진 파일을 배포할 수 없으면 여기에 포함된 모든 단위 테스트가 실행될 때 테스트 결과 창에 실패로 표시됩니다.

이 오류를 수정하려면 파일을 로컬 컴퓨터에서 사용할 수 있는지, 테스트 이진 파일을 마지막으로 다시 빌드했을 때 빌드 오류가 없었는지 확인합니다.

이진 파일만 배포할 수 있는 것은 아닙니다. 데이터 파일과 같은 특정 파일이 테스트에 필요하므로 테스트와 함께 배포되도록 지정할 수 있습니다. 개발할 때 이 파일이 이동되거나 삭제되어 찾을 수 없으면 테스트를 올바르게 실행할 수 없으므로 오류가 발생합니다. 제네릭 테스트와 관련하여 이 오류에 대한 자세한 내용은 테스트 종류별 정보를 참조하십시오.

이 오류를 조사하려면 테스트 실행 구성을 편집하는 데 사용한 대화 상자의 배포 페이지에 지정된 파일과 폴더를 먼저 확인합니다. 자세한 내용은 방법: 테스트 실행 구성 지정을 참조하십시오. 그런 다음 디스크의 해당 파일과 폴더가 있는지 이름이 동일한지 확인합니다.

솔루션에 실행 구성 파일이 여러 개 있을 수 있습니다. 이러한 경우에는 테스트 오류가 발생했을 때 활성 상태였던 실행 구성을 검사해야 합니다. 활성 상태였던 실행 구성을 확인하려면 해당 테스트 실행의 테스트 실행 정보 페이지를 확인합니다. 자세한 내용은 보고된 테스트 결과에서 "테스트 실행 정보 페이지" 단원을 참조하십시오.

활성 실행 구성 파일에 대한 자세한 내용은 방법: 테스트 실행 구성 적용을 참조하십시오.  

원격 테스트 결과의 보고 오류

테스트를 원격으로 실행하면 테스트 결과가 표시되지 않을 수도 있습니다. 이 오류는 테스트 실행의 원격 특성에 관한 것일 수 있습니다.

로컬 테스트 실행의 테스트 결과와 마찬가지로 원격으로 실행된 결과는 로컬로 보고됩니다. 특정 원격 테스트 결과의 보고는 Visual Studio Team System Test Edition에서 생성된 테스트 결과 파일을 원격 테스트 컴퓨터에서 로컬 컴퓨터로 복사하는 기능에 따라 좌우됩니다.

원격 테스트 결과에 오류가 발생하면 원격 컴퓨터와 Visual Studio를 실행하는 컴퓨터 간의 네트워크 연결이 중단되었는지 여부를 먼저 확인합니다.

자세한 내용은 컨트롤러, 에이전트 및 Rig 문제 해결를 참조하십시오.

계측 오류

코드 검사 보고를 사용하려면 테스트되는 이진 파일을 계측한 다음 배포한 후 테스트를 실행해야 합니다.

이진 파일을 계측하지 못하면 코드 검사 보고가 실패하게 됩니다. 테스트 실행이 완료되었으면 테스트 실행 정보 페이지에 코드 검사를 보고할 수 없다는 오류 메시지가 원인 설명과 함께 표시됩니다.

이진 파일 원위치 계측에 실패한 경우 파일이 읽기 전용으로 표시되어 있거나 다른 프로세스에서 파일을 사용 중이기 때문일 수 있습니다. 이진 파일이 읽기 전용인 경우의 오류를 수정하려면 먼저 이진 파일의 특성을 검사하여 쓰기 가능으로 설정해야 합니다. 검사할 이진 파일을 보려면 활성 실행 구성의 코드 검사 페이지를 엽니다. 여기에는 계측할 파일이 지정되어 있습니다. 자세한 내용은 방법: 코드 검사 데이터 가져오기를 참조하십시오.

원위치 계측을 사용하면서 코드 검사에 실패한 경우 수동 테스트와 함께 하나 이상의 단위 테스트를 사용하고 있기 때문일 수도 있습니다. 수동 테스트 중에 테스터는 테스트할 프로덕션 코드를 실행합니다. 테스터가 F5 키나 Ctrl+F5를 눌러 코드를 시작하거나 디버깅하면 프로젝트의 실행 파일이 다시 빌드되어 계측이 제거됩니다.

또한 다른 프로세스에서 이진 파일을 사용하지 않아야 합니다. 예를 들어 Visual Studio의 다른 인스턴스에 해당 파일이 열려 있지 않아야 합니다.

강력한 이름의 어셈블리를 계측하는 경우 어셈블리에 다시 서명하는 데 관련된 기타 오류가 발생할 수 있습니다. 자세한 내용은 어셈블리 계측 및 다시 서명을 참조하십시오.

성능 향상을 위해 테스트 결과 닫기

Visual Studio의 성능을 향상시키려면 이전 테스트 결과를 닫습니다.

테스트를 실행하는 경우 Visual Studio에서는 테스트 실행과 테스트 결과를 메모리에 저장합니다. 누적되는 테스트 실행 및 결과가 늘어날수록 더 많은 메모리가 할당됩니다. 이 경우 테스트 결과 창 도구 모음의 결과 닫기를 클릭하여 테스트 실행을 메모리로부터 해제할 수 있습니다. 이렇게 하면 테스트 결과 개체가 해제되지만 가비지 수집기가 명시적으로 호출되지는 않습니다. 즉, 메모리를 사용할 수 있게 되지만 바로 사용할 수 있는 것은 아닙니다.

또한 메모리에 유지되는 최대 테스트 실행 개수를 설정할 수도 있습니다. 자세한 내용은 방법: 저장된 테스트 실행 개수 제한을 참조하십시오.

코드 검사 데이터를 가져올 때 AnyCPU 빌드 설정 사용

32비트 어셈블리의 코드를 테스트하는 경우에만 코드 검사 데이터를 가져올 수 있습니다. 이 조건을 항상 충족하려면 특정 빌드 속성을 설정합니다.

참고:

C++ 프로젝트의 경우 플랫폼으로 AnyCPU를 선택할 수 없으므로 C++ 프로젝트에는 다음 경고가 적용되지 않습니다.

AnyCPU 값을 사용하여 프로젝트를 빌드한 경우 결과 어셈블리를 대상으로 테스트를 실행하면 코드 검사 데이터가 생성되지만 경고가 함께 발생합니다. 테스트 실행 정보 페이지에서 경고 텍스트를 확인할 수 있습니다.

Warning VSP2013 : Instrumenting this image requires it to run as a 32-bit process.  The CLR header flags have been updated to reflect this.

이 경고는 해당 테스트 실행 도중 코드 검사 데이터를 가져오기 위해 x86 속성을 적용하여 어셈블리를 다시 컴파일했음을 의미합니다. 이 경고가 발생하지 않게 하려면 코드 검사 데이터를 가져올 모든 어셈블리를 x86 설정으로 컴파일합니다.

참고:

응용 프로그램을 32비트 및 64비트 컴퓨터에서 모두 실행해야 하는 경우 테스트가 완료된 후 AnyCPU 설정을 사용하여 다시 컴파일해야 합니다.

단위 테스트를 실행하면 C++/CLI 테스트 어셈블리가 잠길 수 있음

테스트 실행 엔진이 열리면 테스트 프로젝트의 어셈블리가 잠길 수 있습니다. 이러한 현상이 발생하면 어셈블리에 변경 내용을 저장하는 등의 작업을 수행할 수 없습니다. 이 문제는 다음과 같은 상황에 발생할 수 있습니다.

  • 사례 1: TestProjectA 테스트 프로젝트에 대해 배포를 사용하지 않도록 설정했습니다. TestProjectA는 C++/CLI로 컴파일되었습니다. TestProjectA 내의 코드는 특성 클래스를 정의하며 해당 특성은 TestProjectA에 있는 하나 이상의 테스트 메서드를 데코레이팅합니다. 여기서 TestProjectA의 단위 테스트를 실행하면 테스트 실행 엔진이 TestProjectA.DLL을 열어 잠긴 상태로 유지할 수 있습니다.

  • 사례 2: TestProject1 테스트 프로젝트에 두 번째 테스트 프로젝트인 TestProject2에서 컴파일된 DLL이 포함되어 있습니다. TestProject2는 C++/CLI로 컴파일되었습니다. TestProject2 내의 코드는 특성 클래스를 정의하며 해당 특성은 TestProject2에 있는 하나 이상의 테스트 메서드를 데코레이팅합니다. 여기서 TestProject1의 단위 테스트를 실행하면 테스트 실행 엔진이 TestProject2.DLL을 열어 잠긴 상태로 유지할 수 있습니다.

위의 두 가지 경우에 대한 해결 방법은 두 부분으로 나누어집니다. 먼저 다음 단계를 수행합니다.

  1. 도구 메뉴에서 옵션을 선택합니다.

    옵션 대화 상자가 열립니다.

  2. 테스트 도구를 확장하고 테스트 실행을 클릭합니다.

  3. 성능에서 테스트 실행 간에 테스트 실행 엔진 계속 실행 확인란의 선택을 취소합니다.

이러한 단계를 완료해도 문제가 계속되면 다음을 수행합니다.

C++/CLI로 컴파일된 테스트 프로젝트를 기본 AppDomain에서 로드하지 않아도 되도록 코드를 변경합니다. 이 작업을 수행하는 방법 중 하나는 사용 중인 사용자 지정 특성의 정의를 C#에서 구현되는 별도의 어셈블리로 이동하는 것입니다.

테스트 종류별 정보

이 단원의 설명과 같이 특정 테스트 종류를 실행하는 동안 자주 또는 주로 발생하는 특정 오류가 있습니다.

  • 수동 테스트. 수동 테스트는 원격으로 실행할 수 없습니다. 수동 테스트가 포함되는 테스트 실행을 시작하려고 하면 Visual Studio Test Edition에서 테스트 실행의 수동 테스트를 제거합니다. 이 경우 이러한 사항에 대한 경고가 표시되고 테스트 실행을 취소하거나 수동 테스트 없이 계속 진행하도록 선택할 수 있는 옵션이 제공됩니다. 자세한 내용은 Test Edition의 대화 상자를 참조하십시오.

  • 순서가 지정된 테스트. 순서가 지정된 테스트에서 발생하는 오류는 파일 배포와 관련되는 경우가 많습니다. 테스트 엔진에서 순서가 지정된 테스트를 실행하려면 포함된 모든 테스트의 모든 테스트 파일 및 필요한 기타 파일을 모두 찾은 다음 배포해야 합니다. 개별 테스트 중 이 작업에 실패하는 테스트가 있으면 오류가 발생합니다.

  • 제네릭 테스트. 제네릭 테스트를 실행할 때도 배포 오류가 발생할 수 있습니다. 제네릭 테스트의 경우 테스트 실행 구성의 배포 페이지와 제네릭 테스트 자체의 작성 페이지 등 두 가지 방식으로 배포할 파일을 지정할 수 있습니다. 필요한 모든 파일을 나열하지 않거나 Team System 테스트 도구에서 지정된 위치에서 해당 파일을 찾지 못하면 테스트가 실패할 수 있습니다.

    파일 배포 방법이 이렇게 두 가지이므로 오류도 두 가지 수준으로 표시됩니다. 배포 오류가 제네릭 테스트 작성 페이지에 지정된 파일에 관련된 것이면 오류가 테스트 수준에서 나타납니다. 배포 오류가 실행 구성에 지정된 파일에 관련된 것이면 오류가 실행 수준에서 나타납니다.

참고 항목

작업

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

개념

Test Edition의 대화 상자

보고된 테스트 결과

어셈블리 계측 및 다시 서명

단위 테스트와 C++

기타 리소스

테스트 배포

테스트 실행 구성