다음을 통해 공유


IntelliTest를 사용하여 퍼지 테스트를 위한 단위 테스트 생성

IntelliTest는 .NET 코드를 탐색하여 테스트 데이터 및 단위 테스트 제품군을 생성합니다. 코드의 모든 문에 대해 해당 문을 실행할 테스트 입력이 생성됩니다. 코드의 모든 조건부 분기에 대해 사례 분석이 수행됩니다. 예를 들어 if 문장, 어설션 및 예외를 발생시킬 수 있는 모든 작업이 분석됩니다. 이 분석은 각 메서드에 대해 매개 변수가 있는 단위 테스트에 대한 테스트 데이터를 생성하여 높은 코드 검사로 단위 테스트를 만드는 데 사용됩니다. 입력과 테스트 케이스를 줄여 모든 논리 분기를 실행하고 예외를 점검하는 스마트 퍼징 테스트라고 생각하십시오.

IntelliTest를 실행하면 실패하는 테스트를 쉽게 확인하고 이를 해결하는 데 필요한 코드를 추가할 수 있습니다. 생성된 테스트 중 어떤 테스트를 테스트 프로젝트에 저장하여 회귀 제품군을 제공할지 선택할 수 있습니다. 코드를 변경하면 IntelliTest를 다시 실행하여 생성된 테스트를 코드 변경 내용과 동기화된 상태로 유지합니다.

비고

IntelliTest는 Visual Studio 2026에서 더 이상 사용되지 않습니다. Visual Studio 2022에서 IntelliTest는 .NET Framework에 대해서만 지원되며 Visual Studio Enterprise로 제한됩니다. .NET 6에 대한 지원은 미리 보기 버전으로만 제한되었습니다.

비고

Visual Studio 2022에서 IntelliTest는 .NET Framework에 대해서만 지원되며 Visual Studio Enterprise로 제한됩니다. .NET 6에 대한 지원은 미리 보기 버전으로만 제한되었습니다.

가용성 및 확장

IntelliTest 만들기IntelliTest 실행 메뉴 명령:

  • Visual Studio Enterprise Edition에서만 사용할 수 있습니다.

  • .NET Framework를 대상으로 하는 C# 코드만 지원합니다.

  • 확장 가능하며 MSTest, MSTest V2, NUnit 및 xUnit 형식의 내보내기 테스트를 지원합니다.

  • x64 구성을 지원하지 않습니다(미리 보기 버전 필요).

탐색: IntelliTest를 사용하여 코드 탐색 및 단위 테스트 생성

단위 테스트를 생성하려면 형식이 public이어야 합니다.

  1. Visual Studio에서 솔루션을 연 다음 테스트할 메서드가 있는 클래스 파일을 엽니다.

  2. 메서드를 마우스 오른쪽 단추로 클릭하고 IntelliTest 실행을 선택하여 메서드의 코드에 대한 단위 테스트를 생성합니다.

    단위 테스트를 생성하는 메서드를 마우스 오른쪽 단추로 클릭하는 스크린샷

    IntelliTest는 다양한 입력으로 코드를 여러 번 실행합니다. 각 실행은 입력 테스트 데이터와 결과 출력 또는 예외를 보여 주는 표에 표시됩니다.

    탐색 결과 창의 스크린샷.

클래스의 모든 공용 메서드에 대한 단위 테스트를 생성하려면 특정 메서드가 아닌 클래스를 마우스 오른쪽 단추로 클릭한 다음 IntelliTest 실행을 선택합니다. 탐색 결과 창의 드롭다운 목록을 사용하여 클래스의 각 메서드에 대한 단위 테스트 및 입력 데이터를 표시합니다.

목록에서 볼 테스트 결과의 스크린샷.

통과하는 테스트의 경우 결과 열의 보고된 결과가 코드에 대한 예상과 일치하는지 확인합니다. 실패한 테스트의 경우 코드를 적절하게 수정합니다. 그런 다음 IntelliTest를 다시 실행하여 수정 사항의 유효성을 검사합니다.

지속: 단위 테스트를 회귀 도구 모음으로 저장

  1. 매개 변수가 있는 단위 테스트를 사용하여 테스트 프로젝트에 저장할 데이터 행을 선택합니다.

    테스트 결과 저장 스크린샷

    테스트 프로젝트와 생성된 매개 변수가 있는 단위 테스트를 볼 수 있습니다. 각 행에 해당하는 개별 단위 테스트는 테스트 프로젝트의 .g.cs 파일에 저장되고 매개 변수가 있는 단위 테스트는 해당 .cs 파일에 저장됩니다. 수동으로 만든 단위 테스트와 마찬가지로 단위 테스트를 실행하고 테스트 탐색기에서 결과를 볼 수 있습니다.

    솔루션 탐색기의 저장된 테스트 스크린샷

    필요한 참조도 테스트 프로젝트에 추가됩니다.

    메서드 코드가 변경되면 IntelliTest를 다시 실행하여 단위 테스트를 변경 내용과 동기화 상태로 유지합니다.

지원: IntelliTest를 사용하여 코드 탐색 집중

  1. 더 복잡한 코드가 있는 경우 IntelliTest는 코드 탐색에 집중할 수 있도록 지원합니다. 예를 들어 인터페이스를 매개 변수로 사용하는 메서드가 있고 해당 인터페이스를 구현하는 클래스가 두 개 이상 있는 경우 IntelliTest는 해당 클래스를 검색하고 경고를 보고합니다.

    경고를 보고 수행할 작업을 결정합니다.

    경고 보기 스크린샷

  2. 코드를 조사하고 테스트하려는 내용을 이해한 후 경고를 수정하여 인터페이스를 테스트하는 데 사용할 클래스를 선택할 수 있습니다.

    경고 수정 스크린샷

    이 선택은 PexAssemblyInfo.cs 파일에 추가됩니다.

    [assembly: PexUseType(typeof(Camera))]

  3. 이제 IntelliTest를 다시 실행하여 수정한 클래스를 사용하여 매개 변수가 있는 단위 테스트 및 테스트 데이터를 생성할 수 있습니다.

    수정 후 IntelliTest 다시 실행 스크린샷

지정: IntelliTest를 사용하여 코드에서 지정한 정확성 속성의 유효성 검사

생성된 단위 테스트의 유효성을 검사할 입력과 출력 간의 일반적인 관계를 지정합니다. 이 사양은 테스트 메서드처럼 보이지만 보편적으로 정량화된 메서드에 캡슐화됩니다. 이는 매개 변수가 있는 단위 테스트 메서드이며, IntelliTest에서 생성할 수 있는 가능한 모든 입력 값에 대한 어설션을 보유해야 합니다.

질문 & 답변

Q: 비관리 코드에 IntelliTest를 사용할 수 있나요?

A: 아니요, IntelliTest는 관리 코드에서만 작동합니다.

Q: 생성된 테스트는 언제 통과하거나 실패하나요?

A: 예외가 발생하지 않으면 다른 단위 테스트와 마찬가지로 통과합니다. 어설션이 실패하거나 테스트 중인 코드가 처리되지 않은 예외를 throw하는 경우 실패합니다.

특정 예외가 발생하는 것을 허용할 수 있는 테스트가 있는 경우, 테스트 메서드, 테스트 클래스 또는 어셈블리 수준에서 요구 사항에 따라 다음 속성 중 하나를 설정할 수 있습니다.

  • PexAllowedExceptionAttribute

  • PexAllowedExceptionFromTypeAttribute

  • PexAllowedExceptionFromTypeUnderTestAttribute

  • PexAllowedExceptionFromAssemblyAttribute

Q: 매개 변수가 있는 단위 테스트에 가정을 추가할 수 있나요?

A: 예, 가정을 사용하여 특정 메서드에 대한 단위 테스트에 필요하지 않은 테스트 데이터를 지정합니다. 클래스를 PexAssume 사용하여 가정을 추가합니다. 예를 들어 다음과 같이 변수가 null이 lengths 아니라는 가정을 추가할 수 있습니다.

PexAssume.IsNotNull(lengths);

가정을 추가하고 IntelliTest를 다시 실행하면 더 이상 관련이 없는 테스트 데이터가 제거됩니다.

Q: 매개 변수가 있는 단위 테스트에 어설션을 추가할 수 있나요?

A: 예, IntelliTest는 단위 테스트를 실행할 때 문에서 어설션하는 내용이 실제로 올바른지 확인합니다. PexAssert 테스트 프레임워크와 함께 제공되는 클래스 또는 어설션 API를 사용하여 어설션을 추가합니다. 예를 들어 두 변수가 같다는 어설션을 추가할 수 있습니다.

PexAssert.AreEqual(a, b);

어설션을 추가하고 IntelliTest를 다시 실행하면 어설션이 유효한지 확인하고 그렇지 않으면 테스트가 실패합니다.

Q: 먼저 IntelliTest를 실행하지 않고 매개 변수가 있는 단위 테스트를 생성할 수 있나요?

A: 예, 클래스 또는 메서드를 마우스 오른쪽 단추로 클릭한 다음 IntelliTest 만들기를 선택합니다.

IntelliTest 만들기의 스크린샷

기본 형식을 적용하여 테스트를 생성하거나 프로젝트 및 테스트의 이름을 변경하는 방법을 변경합니다. 새 테스트 프로젝트를 만들거나 기존 프로젝트에 테스트를 저장할 수 있습니다.

MSTest 기본값을 사용하여 IntelliTest 만들기 스크린샷

Q: IntelliTest에서 다른 단위 테스트 프레임워크를 사용할 수 있나요?

A: 예, 다음 단계에 따라 다른 프레임워크를 찾아 설치합니다. 테스트 프레임워크 확장은 Visual Studio Marketplace에서도 사용할 수 있습니다(예: NUnit 테스트 생성기).

Visual Studio를 다시 시작하고 솔루션을 다시 연 후 클래스 또는 메서드를 마우스 오른쪽 단추로 클릭한 다음 IntelliTest 만들기를 선택합니다. 여기에서 설치된 프레임워크를 선택합니다.

IntelliTest에 대한 다른 단위 테스트 프레임워크 선택 스크린샷

그런 다음 IntelliTest를 실행하여 해당 .g.cs 파일에서 개별 단위 테스트를 생성합니다.

Q: 테스트를 생성하는 방법에 대해 자세히 알아볼 수 있나요?

A: 예, 대략적인 개요를 보려면 이 블로그 게시물을 읽어보세요.