2014-02-15 9 views
5

NUnit에서 xUnit 테스트 프레임 워크로 프로젝트를 이동하고 있습니다. 우리는 MSBuild 작업을 통해 TeamCity에서 테스트를 수행하고 있습니다. 카테고리별로 테스트를 제외하고 싶습니다. NUnit과 Teamcity에서 이것은 간단합니다.Teamcity의 특성으로 필터링 된 Xunit을 기반으로 테스트 실행

xUnit에서 어떻게해야합니까?

<Target Name="xUnitTests"> 
    <xunit Assembly="$(SolutionDir)\Tests\bin\Debug\MyApp.Tests.exe" /> 
    </Target> 

가 이상적으로는 <xunit> 요소에 속성으로 Exclude="Category=database"을 추가 할,하지만이 유효하지 않습니다

MSBUILD 대상은 다음과 같습니다.

xUnit 소스 코드를 빠르게 살펴본 결과 msbuild 러너에 대해이 옵션을 찾지 못했습니다.

msbuild 러너의 특성에 의한 테스트를 무시하는 다른 방법은 없습니까?

답변

2

테스트에서 TraitAttribute, msbuild 파일의 Exec 작업 및 /-trait "Category=database" 인수가있는 xunit.console.clr4.exe 주자를 사용하십시오.

대신 msbuild를 사용하지 않고 대신 xunit 콘솔을 직접 실행하는 TeamCity에서 추가 단계를 생성하십시오. xunit 프로젝트 파일에서 어셈블리를 지정할 수 있습니다. 이것이 TeamCity 및 XUnit.net과 함께 사용했던 솔루션입니다. xunit 프로젝트 파일을 내 솔루션 항목 폴더에 보관하고 수동으로 테스트 어셈블리를 추가했습니다.

+0

주, xUnit의 콘솔 주자에하면 다음과 같이 -notrait''지금이다 'xunit.console.exe path \ to \ mytest.dll -notrait "Category = database"' – NYCdotNet

5

조쉬 갤러거 (Josh Gallagher)의 대답을 간단한 방법으로 조금 확장 해 보겠습니다.

은 MSBuild와 조쉬 언급처럼 기반으로하지 않지만
<Target Name="xUnitTests"> 
    <!-- For debug builds: skipping long integration tests --> 
    <xunit Condition="'$(Configuration)' == 'Debug'" 
      ExcludeTraits="Category=Integration" 
      Assembly="$(SolutionDir)\Tests\bin\Debug\MyApp.Tests.exe" /> 

    <!-- For release builds: run them all --> 
    <xunit Condition="'$(Configuration)' == 'Release'" 
      Assembly="$(SolutionDir)\Tests\bin\Debug\MyApp.Tests.exe" /> 
</Target> 
+0

질문 당시, 이것은 이용 가능하지 않았습니다. 시도 된 것이고 유효하지 않은 오류가 있습니다. xml이 던졌습니다. – trailmax

+0

@ trililmax, 오, 알았어. 글쎄요, 좋은 일은 지금 제게 꽤 잘 작동하고 있습니다. 그래서 이것들이 제대로 고정되어있을 수도 있습니다. – Sevenate

+0

잘 작동합니다. 나는 다음 프로젝트에서 그것을 시도 할 것이다. – trailmax

1

, 나는 xUnit의 + dotcover을 만들었습니다

[Fact] 
[Trait("Category", "Integration")] 
public async Task Test_for_long_running_operation() 
{ 
    var someClass = new SomeClass(); 
    int result = await someClass.LongRunningOperationAsync() 
    Assert.Equal(5, result); 
} 

[Fact] 
[Trait("Category", "Unit")] 
public void Test_for_quick_operation() 
{ 
    var someClass = new SomeClass(); 
    int result = someClass.GetSomeNumber() 
    Assert.Equal(3, result); 
} 

당신이 당신의 MSBuild 대상 파일에 다음을 할 수 : 다음과 같은 검사를한다고 가정 xunit 특성, 필터 및 와일드 카드 선택 포함 및 제외를 지원하는 메타 러너. 즉, 특정 테스트 세트를 대상으로 빌드 단계를 만들 수 있습니다. 테스트 러너 부분 만 필요하면 도트 커버의 부품을 제외 할 수도 있습니다.

당신은 내 게시물에 대한 자세한 내용과 소스 찾을 수 : 2 이상이, 형질 전환에 의해 제외

http://www.wwwlicious.com/2015/09/25/teamcity-dotcover-xunit-at-last/

+0

차가움. 나는 XUnit과 함께 할 다음 프로젝트에 bash를 줄 것이다. – trailmax