소개
Prig(Prig는 PRototyping jIG의 약자)는 .NET 프레임워크를 위한 경량 테스트 더블 생성 프레임워크입니다. 이 프레임워크는 Microsoft Fakes, Typemock Isolator, Telerik JustMock과 유사하게, 관리되지 않는 프로파일러 API를 기반으로 정적 속성, 비가상 멤버 등 어떤 메서드든 모의 객체로 교체할 수 있게 합니다. 주로 Visual Studio 통합 환경에서 사용되며, 테스트하기 어려운 코드의 단위 테스트를 가능하게 합니다.
상세정보
범용적인 메서드 교체
Prig는 DateTime.Now와 같은 정적 속성, 비가상 멤버, private 메서드 등 거의 모든 유형의 메서드를 테스트 더블로 교체할 수 있습니다. 이를 통해 테스트하기 어려운 의존성을 격리하고 제어할 수 있습니다.
Visual Studio 통합
Visual Studio 확장(VSIX)으로 제공되어 개발 환경에 자연스럽게 통합됩니다. 메뉴를 통해 Prig 설정, 유도 설정 편집, 테스트 실행 등을 직관적으로 수행할 수 있습니다.
자동 코드 생성
Prig 설정 세션에서 특정 유형이나 메서드를 선택하면 해당 메서드의 유도 설정을 자동으로 생성합니다. 생성된 XML 설정 파일은 테스트 프로젝트에 추가되어 사용됩니다.
1단계: 스터프 설정 추가
테스트 프로젝트를 생성한 후, 프로젝트의 ‘참조’를 마우스 오른쪽 버튼으로 클릭하고 ‘Add Prig Assembly for mscorlib’를 선택합니다. 이렇게 하면 테스트 프로젝트에 스텁 설정 파일이 추가됩니다.
2단계: 유도 설정 생성 및 수정
추가된 스텁 설정 파일을 마우스 오른쪽 버튼으로 클릭하고 ‘Edit Prig Indirection Settings’를 선택하면 Prig 설정 세션이 시작됩니다. 이 세션에서 PowerShell 명령어를 사용하여 교체하고 싶은 메서드의 유도 설정을 생성할 수 있습니다.
예를 들어, DateTime.Now의 유도 설정을 생성하려면 다음 명령어를 실행합니다.
PS> $TargetReferencedAssembly.GetTypes() | ? { $_.Name -eq ‘datetime’ } | pfind -m ‘get_Now’ | pget | clip
생성된 설정을 스텁 설정 파일에 붙여 넣으면 됩니다.
3단계: 테스트 코드 작성
테스트 코드에서 Prig가 자동 생성한 PDateTime 같은 ‘Prig 타입’을 사용하여 메서드의 동작을 교체할 수 있습니다.
using (new IndirectionsContext())
{
PDateTime.NowGet().Body = () => new DateTime(2013, 12, 13, 11, 00, 00);
// 이제 DateTime.Now는 항상 2013/12/13 11:00:00을 반환합니다.
}
4단계: 테스트 실행기 설치 및 테스트 실행
Visual Studio 테스트 탐색기에서 테스트를 실행하려면 Prig 호환 테스트 실행기를 설치해야 합니다. 패키지 관리자 콘솔에서 다음 명령어를 실행합니다.
PM> Install-Package NUnitTestAdapterForPrig
테스트를 실행하기 전에 ‘PRIG – Enable Test Adapter for [프로젝트 이름]’ 메뉴를 선택하여 환경 변수를 설정해야 합니다.その後, 테스트 탐색기에서 테스트를 실행할 수 있습니다.
이런 경우에 유용합니다
- 외부 환경에 의존하는 코드 테스트: DateTime.Now, 파일 시스템, 네트워크 요청 등 외부 상태에 의존하는 코드를 격리하여 테스트할 때 유용합니다.
- 기존 코드 수정 없이 테스트: 프로덕션 코드를 수정하지 않고도 테스트 더블을 사용하여 의존성을 교체할 수 있습니다.
- 단위 테스트 격리성 강화: 테스트 간의 의존성을 제거하고 격리된 환경에서 테스트를 실행하여 결과의 신뢰성을 높입니다.
지원 환경 및 시스템 요구사항
- 개발 환경: Visual Studio 2013 이상(커뮤니티 에디션 이상, Visual Studio 2015 지원).
- 필수 소프트웨어: PowerShell v3.0 이상.
- Windows 7 사용 시: Windows Management Framework 3.0 이상을 사전에 설치해야 합니다.
- 테스트 실행: NUnit, MSTest, xUnit.net 테스트 실행기를 지원하며, 각각 Prig 전용 어댑터가 필요합니다.
최신 버전 및 업데이트
현재 공개된 최신 버전은 2.3.2이며, 2017년 3월 12일에 릴리스되었습니다.
제한 사항 및 확인 사항
- Prig를 사용하려면 Visual Studio를 관리자 권한으로 실행해야 합니다.
- 공식 NUnit Test Adapter는 Prig와 호환되지 않으므로, Prig 전용 NUnitTestAdapterForPrig 패키지를 사용해야 합니다.
- 테스트를 실행하기 전에 ‘PRIG – Enable Test Adapter’ 메뉴를 통해 환경 변수를 설정해야 합니다.
- Windows 7 환경에서는 Windows Management Framework 3.0 이상이 필수입니다.
시스템 요구사항
Array


