이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 31285|회답: 3

[출처] .net/c#은 xunit 단위 테스트를 사용합니다

[링크 복사]
게시됨 2019. 1. 22. 오후 2:58:26 | | | |
현재 재직 중입니다. Net 프레임워크 하의 테스트 도구들은 주로 Nunit, 내장 MSTest, Xunit이며, 이 글에서는 VS의 떠오르는 스타인 XUnit 사용법을 간략히 소개하겠습니다.

xunit이 지원하는 최소 실행 시간은 입니다. NET 4.5.2, 대부분은 더 높습니다. 설령 4.0 클래스 라이브러리를 만들 수 있다 해도, 최소한 .NET 4.5.2에서는 여전히 작동할 수 있습니다. 상세 링크:https://github.com/xunit/xunit/issues/1817


먼저, itsvse-test라는 이름의 새로운 .NET 4.5.2 콘솔 프로젝트를 만들었고, xunit의 최신 버전은 2.4.1이므로 nuget 명령어는 다음과 같습니다:

각 패키지는 소유자가 라이선스를 부여합니다. NuGet은 제3자 패키지에 대해 책임지지 않으며 라이선스도 제공하지 않습니다. 일부 패키지에는 다른 라이선스의 적용을 받는 의존성을 포함할 수 있습니다. 패키지 소스(소스) URL을 클릭하여 의존성을 확인하세요.

패키지 관리자 콘솔 호스트 버전 4.7.0.5212

"get-help NuGet"을 입력하면 모든 사용 가능한 NuGet 명령어를 볼 수 있습니다.

PM> 설치-패키지 xunit -버전 2.4.1


수집과 표적 확보 시도가 진행 중입니다. NETFramework, 패키지 "xunit.2.4.1"에 관한 프로젝트 "itsvse-test"의 Version=v4.5.2"
의존성 정보를 수집하는 데 2.1초가 걸립니다
DependencyBehavior를 "가장 낮은 값"으로 설정한 패키지 "xunit.2.4.1"의 의존성을 해결하려고 합니다.
의존성 정보 구문 분석은 0ms가 소요됩니다
패키지 "xunit.2.4.1" 설치를 위한 파싱 작업입니다
"xunit.2.4.1" 패키지 설치 작업 해결
"cnblogs"에서 패키지 "xunit 2.4.1" 조회하세요
"cnblogs"에서 패키지 "xunit.abstractions 2.0.3"을 검색하세요.
"cnblogs"에서 패키지 "xunit.analyzers 0.10.0" 를 가져옵
"cnblogs"에서 패키지 "xunit.assert 2.4.1" 를 가져오기
"cnblogs"에서 패키지 "xunit.core 2.4.1" 가져오기
"cnblogs"에서 패키지 "xunit.extensibility.core 2.4.1" 가져오기
"cnblogs"에서 패키지 "xunit.extensibility.execution 2.4.1" 를 가져오기
  가져오기https://api.nuget.org/v3-flatcon ... 1/xunit.2.4.1.nupkg
  가져오기https://api.nuget.org/v3-flatcon ... actions.2.0.3.nupkg
  가져오기https://api.nuget.org/v3-flatcon ... it.core.2.4.1.nupkg
  가져오기https://api.nuget.org/v3-flatcon ... .assert.2.4.1.nupkg
  가져오기https://api.nuget.org/v3-flatcon ... ty.core.2.4.1.nupkg
  가져오기https://api.nuget.org/v3-flatcon ... ecution.2.4.1.nupkg
  가져오기https://api.nuget.org/v3-flatcon ... lyzers.0.10.0.nupkg
  그래https://api.nuget.org/v3-flatcon ... actions.2.0.3.nupkg116ms
  그래https://api.nuget.org/v3-flatcon ... 1/xunit.2.4.1.nupkg117ms
xunit.abstraactions 2.0.3 설치 중입니다.
xunit 2.4.1 설치 중입니다.
  그래https://api.nuget.org/v3-flatcon ... it.core.2.4.1.nupkg151ms
xunit.core 2.4.1 설치 중입니다.
  그래https://api.nuget.org/v3-flatcon ... .assert.2.4.1.nupkg167ms
xunit.assert 2.4.1 설치 중입니다.
  그래https://api.nuget.org/v3-flatcon ... ty.core.2.4.1.nupkg221ms
xunit.extensibility.core 2.4.1 설치 중입니다.
  그래https://api.nuget.org/v3-flatcon ... lyzers.0.10.0.nupkg200ms
xunit.analyzers 0.10.0 설치 중입니다.
  그래https://api.nuget.org/v3-flatcon ... ecution.2.4.1.nupkg306ms
xunit.extensibility.execution 2.4.1 설치 중입니다.
"xunit.abstractions.2.0.3" 패키지를 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가합니다.
패키지 "xunit.abstractions.2.0.3"이 폴더 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages"에 추가되었습니다.
"xunit.abstractions.2.0.3" 패키지를 "packages.config"에 추가했습니다.
itsvse-test에 "xunit.abstractions 2.0.3"을 성공적으로 설치했습니다
toolset only 패키지 "xunit.analyzers.0.10.0"을 "itsvse-test"에 추가하기
"xunit.analyzers.0.10.0" 패키지를 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가하기
"xunit.analyzers.0.10.0" 패키지가 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가되었습니다.
"xunit.analyzers.0.10.0" 패키지를 "packages.config"에 추가했습니다.
스크립트 파일 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages\xunit.analyzers.0.10.0\tools\install.ps1"
"xunit.analyzers 0.10.0"이 ITSVSE-test에 성공적으로 설치되었습니다
"xunit.assert.2.4.1" 패키지를 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가하기
"xunit.assert.2.4.1" 패키지가 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가되었습니다.
"xunit.assert.2.4.1" 패키지를 "packages.config"에 추가했습니다.
"xunit.assert 2.4.1"이 ITSVSE-Test에 성공적으로 설치되었습니다
"xunit.extensibility.core.2.4.1" 패키지를 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가합니다
"xunit.extensibility.core.2.4.1" 패키지가 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가되었습니다.
"xunit.extensibility.core.2.4.1" 패키지를 "packages.config"에 추가했습니다.
"xunit.extensibility.core 2.4.1"이 ITSVSE-Test에 성공적으로 설치되었습니다
"xunit.extensibility.execution.2.4.1" 패키지를 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가하기
패키지 "xunit.extensibility.execution.2.4.1"이 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가되었습니다.
"xunit.extensibility.execution.2.4.1" 패키지를 "packages.config"에 추가했습니다.
"xunit.extensibility.execution 2.4.1"이 itsvse-test에 성공적으로 설치되었습니다
"xunit.core.2.4.1" 패키지를 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가하기
패키지 "xunit.core.2.4.1"이 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가되었습니다.
"packages.config" 에 "xunit.core.2.4.1" 패키지를 추가했습니다.
"xunit.core 2.4.1"이 ITSVSE-Test에 성공적으로 설치되었습니다
프로젝트 "itsvse-test"에 의존성만 가진 패키지 "xunit.2.4.1"을 추가합니다.
패키지 "xunit.2.4.1"이 폴더 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages"에 추가되고 있습니다.
"xunit.2.4.1" 패키지가 "C:\Users\itsvse_pc\Source\Repos\itsvse-test\packages" 폴더에 추가되었습니다.
패키지 "xunit.2.4.1"이 "packages.config"에 추가되었습니다.
"xunit 2.4.1"이 ITSVSE-Test에 성공적으로 설치되었습니다
누겟은 5.51초가 걸려 실행 완료
경과 시간: 00:00:07.7781544
쪽지>
플러그인 패키지를 설치하세요: xunit.runner.console(이 글에서는 생략됨)과 xunit.runner.visualstudio

여기서 xUnit은 프레임워크입니다.그리고 xunit.runner.visualstudio는 VS 플러그인 패키지입니다, 그래서 VS에서 쉽게 디버깅할 수 있습니다.xunit.runner.console 설치는 CMD로도 디버깅할 수 있습니다하지만 이것만 지원된다면, 이 프레임워크를 사용하는 사람은 많지 않을 것 같습니다. 결국 명령어 입력 방식이 Visual Studio의 성능을 크게 떨어뜨리기 때문에 여기서 설명하지 않겠습니다.

여기서는 xunit.runner.visualstudio 플러그인 패키지만 설치하고, 솔루션 탐색기에서 프로젝트를 우클릭한 후 NuGet 패키지 관리(Manage NuGet Packages)를 선택하면 됩니다. xunit.runner.visualstudio라는 패키지를 검색(설치)하세요:



테스트 브라우저가 보이는지 확인하세요(테스트 탐색기> 테스트 > 창으로 가세요). 프로젝트가 구축될 때마다 러너는 프로젝트 내에서 단위 테스트를 발견합니다. 탐색 기간이 지나면 발견된 검사 목록이 보일 것입니다:



프로그램 파일을 편집하고 다음 코드를 변경하세요:

'모두 실행' 창에서 링크를 클릭하면 테스트를 실행하면 테스트 탐색기 창에서 결과 업데이트가 보일 것입니다:



실패한 테스트를 클릭하면 실패 메시지와 스택 트레이스를 볼 수 있습니다. 스택 트레이스 라인을 클릭하면 실패한 코드 라인으로 바로 갈 수 있습니다.

(끝)





이전의:잠든 여동생 알람시계 v4.6.1 전문 유료 프리미엄 중국어 버전
다음:오늘의 C# 학습 노트
 집주인| 게시됨 2019. 1. 22. 오후 3:19:24 |
Xunit은 테스트 클래스에 태그를 붙일 필요가 없습니다

xUnit은 [사실]과 [이론] 속성을 모두 지원합니다. 코드에서 보시다시피, [Fact]는 우리가 작성하는 실제 호출 코드와 유사하고, [Theory]는 InlineData와 함께 한 메서드에서 여러 매개변수 집합을 직접 테스트할 수 있습니다.

 집주인| 게시됨 2019. 1. 22. 오후 3:31:55 |
이상 검사

Xunit은 Attributes를 통해 예외 포획을 플래그하지 않고, Assert.Throws assertion 함수를 직접 사용하여 예외를 검증합니다.

    공공 클래스 TestClass1
    {
        [사실]
        공공 공백 테스트Exception()
        {
            Assert.Throws<InvalidOperationException>(() => 연산());
        }

        공허 연산()
        {
            새로운 InvalidOperationException();
        }
    }



테스트 케이스 이름 변경:

     [사실(DisplayName = "최대 기능 테스트")]



테스트 케이스 건너뛰기:

     [사실(건너뛰기="리팩토링 불완전")]



그룹화:

     [특성("그룹", "범주")]
 집주인| 게시됨 2019. 1. 22. 오후 3:37:28 |
많은 경우, 우리는 단위 테스트가 데이터베이스 내 내용에 영향을 미치지 않길 원하며, 때로는 데이터베이스의 영향으로 인해 단위 테스트가 매우 느려질 때도 있습니다. 그래서 보통 영속성 부분을 분리하고 싶어 하며, 단위 테스트 시 데이터를 사실상 영속성으로 유지하지는 않습니다. 이러한 격리는 일반적으로 추상화, 즉 인터페이스나 추상 클래스를 사용해 영구 계층을 분리하고, 모의 인터페이스를 사용해 해당 인터페이스를 시뮬레이션하거나 추상 클래스를 사용해 해당 영구 클래스를 완성합니다. MoQ는 이러한 모의 프레임워크 중 하나이며, Mock보다 사용하기 더 간단하고 강력한 타입 방식을 사용하며, 소스 코드와 dll에 접근할 수 있습니다하이퍼링크 로그인이 보입니다.다운로드하세요. MoQ의 최신 버전은 현재 3.1 버전이며, 4.0은 아직 베타 단계입니다.
https://www.cnblogs.com/catcher1994/p/5498530.html
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com