이 항목에서는 테스트 우선 개발을 지원하는 사용량 생성 기능을 사용하는 방법을 보여 줍니다.
테스트 우선 개발 은 먼저 제품 사양에 따라 단위 테스트를 작성한 다음 테스트에 성공하는 데 필요한 소스 코드를 작성하는 소프트웨어 디자인에 대한 접근 방식입니다. Visual Studio는 테스트 사례에서 처음 참조할 때 새 형식 및 멤버를 정의하기 전에 소스 코드에서 새 형식 및 멤버를 생성하여 테스트 우선 개발을 지원합니다.
Visual Studio는 워크플로 중단을 최소화하면서 새 형식 및 멤버를 생성합니다. 코드에서 현재 위치를 그대로 두지 않고 형식, 메서드, 속성, 필드 또는 생성자에 대한 스텁을 만들 수 있습니다. 형식 생성 옵션을 지정하는 대화 상자를 열면 대화 상자가 닫히면 포커스가 현재 열려 있는 파일로 즉시 돌아갑니다.
사용량 생성 기능은 Visual Studio와 통합되는 테스트 프레임워크에서 사용할 수 있습니다. 이 항목에서는 Microsoft 단위 테스트 프레임워크를 설명합니다.
비고
이 문서의 지침은 Visual Studio에서 사용할 수 있는 IDE(대화형 개발 환경)의 최신 버전을 보여 줍니다. 컴퓨터에 일부 사용자 인터페이스 요소에 대한 다른 이름 또는 위치가 표시될 수 있습니다. 다른 버전의 Visual Studio 또는 다른 환경 설정을 사용할 수 있습니다. 자세한 내용은 IDE 개인 설정참조하세요.
Windows 클래스 라이브러리 프로젝트 및 테스트 프로젝트 만들기
C# 또는 Visual Basic에서 새 Windows 클래스 라이브러리 프로젝트를 만듭니다.
GFUDemo_VB
사용 중인 언어에 따라 이름을 지정하거나GFUDemo_CS
이름을 지정합니다.솔루션 탐색기에서 맨 위에 있는 솔루션 아이콘을 마우스 오른쪽 단추로 클릭하고새 프로젝트추가>를 선택합니다.
새 단위 테스트 프로젝트(.NET Framework) 프로젝트를 만듭니다.
클래스 라이브러리 프로젝트에 대한 참조 추가
솔루션 탐색기의 단위 테스트 프로젝트에서 참조 항목을 마우스 오른쪽 단추로 클릭하고 참조 추가를 선택합니다.
참조 관리자 대화 상자에서 프로젝트를 선택한 다음 클래스 라이브러리 프로젝트를 선택합니다.
확인을 선택하여 참조 관리자 대화 상자를 닫습니다.
솔루션을 저장합니다. 이제 테스트 작성을 시작할 준비가 되었습니다.
단위 테스트에서 새 클래스 생성
테스트 프로젝트에는 UnitTest1이라는 파일이 포함되어 있습니다. 솔루션 탐색기에서 이 파일을 두 번 클릭하여 코드 편집기에서 엽니다. 테스트 클래스 및 테스트 메서드가 생성되었습니다.
클래스
UnitTest1
에 대한 선언을 찾아 이름을 .로AutomobileTest
바꿉니다.비고
IntelliSense는 이제 IntelliSense 문 완성을 위한 두 가지 대안인 완성 모드 와 제안 모드를 제공합니다. 클래스와 멤버가 정의되기 전에 사용되는 상황에 제안 모드를 사용합니다. IntelliSense 창이 열려 있는 경우 Ctrl+Alt+스페이스를 눌러 완성 모드와 제안 모드 간에 전환할 수 있습니다. 자세한 내용은 IntelliSense 사용을 참조하세요. 제안 모드는 다음 단계에서
Automobile
을(를) 입력할 때 도움이 됩니다.TestMethod1()
메서드를 찾아DefaultAutomobileIsInitializedCorrectly()
로 이름을 바꿉니다. 이 메서드 내에서 다음 스크린샷과 같이 이름이 지정된Automobile
클래스의 새 인스턴스를 만듭니다. 컴파일 타임 오류를 나타내는 물결선 밑줄이 나타나고, 왼쪽 여백 또는 물결표 바로 아래에 마우스로 가리키면 빠른 작업 오류 전구가 나타납니다.빠른 작업 전구를 선택하거나 클릭합니다. 형식
Automobile
이 정의되지 않았다는 오류 메시지가 표시됩니다. 또한 몇 가지 솔루션이 제공됩니다.새 형식 생성을 클릭하여 형식 생성 대화 상자를 엽니다. 이 대화 상자는 다른 프로젝트에서 형식을 생성하는 옵션을 제공합니다.
프로젝트 목록에서 GFUDemo_VB 또는 GFUDemo_CS 클릭하여 Visual Studio에 테스트 프로젝트 대신 클래스 라이브러리 프로젝트에 파일을 추가하도록 지시합니다. 아직 선택하지 않은 경우 새 파일 만들기 를 선택하고 이름을 Automobile.cs 또는 Automobile.vb.
확인을 클릭하여 대화 상자를 닫고 새 파일을 만듭니다.
솔루션 탐색기에서 GFUDemo_VB 또는 GFUDemo_CS 프로젝트 노드를 확인하여 새 Automobile.vb 또는 Automobile.cs 파일이 있는지 확인합니다. 코드 편집기에서
AutomobileTest.DefaultAutomobileIsInitializedCorrectly
포커스는 계속 진행되므로 최소한의 중단으로 테스트를 계속 작성할 수 있습니다.
속성 스텁 생성
제품 사양에서 Automobile
클래스가 Model
및 TopSpeed
라는 이름의 두 개의 public 속성을 가지고 있다고 가정합니다. 이러한 속성은 기본값 "Not specified"
과 -1
기본 생성자를 사용하여 초기화해야 합니다. 다음 단위 테스트에서는 기본 생성자가 속성을 올바른 기본값으로 설정하는지 확인합니다.
테스트 메서드에 다음 코드
DefaultAutomobileIsInitializedCorrectly
줄을 추가합니다.코드는
Automobile
에서 두 개의 정의되지 않은 속성을 참조하므로Model
및TopSpeed
아래에 물결선이 나타납니다. 마우스를Model
위에 올리고 "빠른 작업" 오류 전구를 선택한 다음 'Automobile.Model' 속성 생성을 선택합니다.동일한 방식으로 속성에
TopSpeed
대한 속성 스텁을 생성합니다.클래스에서
Automobile
새 속성의 형식은 컨텍스트에서 올바르게 유추됩니다.
새 생성자에 대한 스텁 생성
이제 Model
및 TopSpeed
속성을 초기화하기 위한 생성자 스텁을 생성하는 테스트 메서드를 만듭니다. 나중에 테스트를 완료하기 위해 코드를 더 추가합니다.
클래스에 다음 추가 테스트 메서드를 추가합니다
AutomobileTest
.빨간색 물결선 아래에서 빠른 작업 오류 전구를 클릭한 다음 '자동차'에서 생성자 생성을 클릭합니다.
Automobile
클래스 파일에서 새 생성자는 생성자 호출에 사용되는 지역 변수의 이름을 검사하고, 클래스에서Automobile
이름이 같은 속성을 찾았으며, 생성자 본문에 인수 값을Model
저장하기 위한 코드를 제공했습니다TopSpeed
.새 생성자를 생성한 후, 기본 생성자에 대한
DefaultAutomobileIsInitializedCorrectly
안의 호출 아래에 물결선 밑줄이 나타납니다. 오류 메시지는 클래스에Automobile
인수 0을 사용하는 생성자가 없음을 나타냅니다. 매개 변수가 없는 명시적 기본 생성자를 생성하려면 빠른 작업 오류 전구를 클릭한 다음 '자동차'에서 생성자 생성을 클릭합니다.
메서드에 대한 스텁 생성
조건 사양에 따르면 새로운 Automobile
을 IsRunning
상태로 전환할 수 있으며, 이는 해당 Model
및 TopSpeed
속성이 기본값이 아닌 다른 값으로 설정되었을 때 가능하다고 가정합니다.
메서드에 다음 줄을 추가합니다
AutomobileWithModelNameCanStart
.메서드 호출에 대한
myAuto.Start
빠른 작업 오류 전구를 클릭한 다음 'Automobile.Start' 메서드 생성을 클릭합니다.속성에 대한
IsRunning
빠른 작업 전구를 클릭한 다음 'Automobile.IsRunning' 속성 생성을 클릭합니다.이제 클래스에
Automobile
이름이 지정된 메서드와 이름이Start()
지정된IsRunning
속성이 포함됩니다.
테스트 실행
테스트 메뉴에서모든 테스트실행을> 선택합니다.
모든 테스트실행> 명령은 현재 솔루션에 대해 작성된 모든 테스트 프레임워크에서 모든 테스트를 실행합니다. 이 경우 두 가지 테스트가 있으며 둘 다 예상대로 실패합니다.
DefaultAutomobileIsInitializedCorrectly
테스트는Assert.IsTrue
조건이False
를 반환하기 때문에 실패합니다.Automobile
테스트가 실패하는 이유는Automobile
클래스의Start
메서드가 예외를 발생시키기 때문입니다.테스트 결과 창은 다음 그림에 나와 있습니다.
테스트 결과 창에서 각 테스트 결과 행을 두 번 클릭하여 각 테스트의 위치로 이동합니다.
소스 코드 구현
다음 코드를 기본 생성자에 추가하여
Model
,TopSpeed
, 및IsRunning
속성이 각각 올바른 기본값"Not specified"
,-1
, 및False
(또는 C#의 경우false
)으로 초기화되도록 합니다.메서드가
Start
호출될 때,Model
또는TopSpeed
속성이 기본값 이외의 값으로 설정된 경우에만IsRunning
플래그를 true로 설정해야 합니다.NotImplementedException
메서드 본문에서 제거하고 다음 코드를 추가합니다.
테스트를 다시 실행합니다.
테스트 메뉴에서 실행을 가리킨 다음 모든 테스트를 클릭합니다.
이번에는 테스트가 통과합니다. 테스트 결과 창은 다음 그림에 나와 있습니다.