2009-06-29 4 views
3

일부 build automation of running xUnit.net tests with MSBuild의 일부로 항목 묶음을 반복해야하는 경우가 있습니다.MSBuild에서의 트랩 오류 상태

루프 내에서 반복이 실패했는지 여부를 감지해야합니다. 그러나 아무리 계속 실행하고 싶습니다. 그런 다음 일괄 처리 된 비트 후에 TeamBuild에 결과를보고하기 위해 하나 이상의 오류가 발생했는지 여부를 알아야합니다. 의사의

IOW :

Task Name=RunTests 
    CreateItems 
    ForEach item CallTarget Target=RunTest ContinueOnError=true 
    CombineNUnitResults 
    Report success/failure 

Task Name=RunTest 
    XUnit item 

나는이 사용자 지정 작업없이 달성 할 수 있습니다 희망 (또는 Jonne했던 것과 xunit.net은 MSBuild 작업을 해킹)하고있다. (하지만 MSBuild 커뮤니티 또는 Sdc 작업을 기꺼이 사용합니다.)

및 @BradWilson :이 작업은 깔끔하게 할 수 없으며, 또한 Jonne의 변경 사항을 NUnit 작업으로 찾고 xunit 작업도 수행합니다.

은 참조 : How do I get Team Build to show test results and coverage for xUnit.net test suite?

답변

6

이 우리가하는 일이다 :이 상관없이 실패의 모든 단위 테스트를 실행되지만 모든 오류가 있다면 모두가 실행 된 후 실패합니다

<NUnit Assemblies="@(TestAssemblies)" 
    ToolPath="$(NUnitPath)" 
    WorkingDirectory="%(TestAssemblies.RootDir)%(TestAssemblies.Directory)" 
    OutputXmlFile="@(TestAssemblies->'%(FullPath).$(NUnitFile)')" 
    Condition="'@(TestAssemblies)' != ''" 
    ExcludeCategory="$(ExcludeNUnitCategories)" 
    ContinueOnError="true"> 
    <Output TaskParameter="ExitCode" ItemName="NUnitExitCodes"/> 
</NUnit> 

<Error Text="Test error(s) occured" Code="%(NUnitExitCodes.Identity)" Condition=" '%(NUnitExitCodes.Identity)' != '0' And '@(TestAssemblies)' != ''"/> 

. 참고 ContinueOnError="true"은 모두 실행되고 끝에있는 오류가 실패했는지 확인합니다 (nunit 0은 성공을 나타내고 다른 것은 실패 함).

참고 : 이것은 MSBuildCommunityTasks NUnit 작업을 사용하고 있지만 nunit exe로 exec를 사용하는 경우에도 동일한 효과를 얻을 수 있습니다. "ExitCode"출력은 ToolTask에서 상속 된 모든 태스크에 공통적입니다.

+0

안녕하세요 마이크, 답장 시간을내어 주셔서 감사합니다. 저의 독서에서 ExitCode는 xUnit 작업에 구현되지 않은 사용자 정의 NUnit 작업 속성입니다. (NUnit 작업은 여러 어셈블리를 필요로합니다 (xUnit doesnt는 매개 변수를 Assembly라고 부르며 xUnit codeplex 토론에 대한 토론이 있습니다)). 이제 노트 비트를 읽었습니다. 더 많은 연구를해야합니다. 이 주석을 삭제하고 내가 할 때 더 현명한 무언가로 바꿀 것입니다 (나는 ExitCode가 NUnit과 Exec에만 있다고 생각했습니다). 좋은 직장에서 MSPress 책을 가지고 있습니다! –

+0

아 - 아주 좋은 점은 xunit 작업이 ToolTask에서 파생되지 않았으므로 [codeplex 사이트에서 요청하는 문제] (http://xunit.codeplex.com/WorkItem/View.aspx?WorkItemId=7954)를 작성하는 것입니다. 완료되면 조립 목록을 반복하고 XML을 병합하기 위해 깨끗한 MSBuild를 수행해야합니다. –

+0

+1 - 비슷한 문제가 있었지만이 대답으로 직접 해결하지는 못했지만 올바른 방향 –