2011-08-09 5 views
4

내 컴퓨터에서 OpenCover가 작동되면 다음 단계로 빌드 서버와 함께 작동하게됩니다.OpenCover MSBuild 통합 - 결과가 생성되지 않았습니다.

저는 Bamboo Build Server에서 OpenCover와 MSBuild를 통합하려고했습니다. 솔루션을 구축 한 후 OpenCover 실행하려면 다음과 같이 나는 Build.proj을 수정 한 :

<Target Name="TestAndCodeCoverage" DependsOnTargets="Build" > 
    <Message Text="Executing Unit Tests and running OpenCover to check code coverage..." /> 
    <MakeDir Directories="Coverage" /> 
    <Exec Command='"C:\Program Files (x86)\OpenCover\OpenCover.Console.exe" -target:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" -targetargs:/testcontainer:"TestProject\bin\Release\TestProject.dll" -filter:+[*]* -output:Coverage\CodeCoverageResults.xml -register:user -mergebyhash' /> 
</Target> 

은 "범위"디렉토리 (작업 디렉토리는 빌드 중입니다) 솔루션의 루트 디렉토리에 생성됩니다. 테스트가 실행되고 모두 통과하지만 빌드 로그에 Committing....이 표시되면 (명령 줄에 표시되는 내용) 결과가 생성되지 않고 빌드가 다음 태스크로 이동합니다 (ReportGenerator로 보고서 작성 - 실패 함). CodeCoverageResults.xml이 작성되지 않았으므로).

빌드 시스템의 명령 줄에서 동일한 명령을 실행하면 모든 것이 예상대로 작동하며 ReportGenerator에서 보고서를 생성 할 수 있습니다.

다른 누구도 동일한 문제가 있습니까? PartCover 예제와 같은 dll을 this처럼 등록해야합니까?

답변

4

빌드 서버는 서비스이므로 -register 스위치 만 사용합니다. 그러나 서버를 빌드 할 경우 32 비트와 64 비트 프로파일러를 모두 등록한 다음 regsvr32를 사용하여 삭제해야한다고 말합니다. -register switch ie 매번 프로파일 러를 등록하고 등록을 취소 할 필요가 없습니다.

-register [: user] 스위치는 사람과 같이 제한된 권한으로 작업하려는 시나리오를위한 것입니다.

+0

두 개의 프로파일 러 등록 - 감사합니다! – Jack

+0

내 문제를 해결하려고하는 것처럼 들리지만, register 플래그가 나를 위해 무엇을하는지, 그리고 이것이 작동하려면 왜 필요한지에 대한 설명으로 할 수 있습니다. 건배 –

+1

프로파일 러는 COM 개체이므로 레지스트리에 등록해야합니다. 이제는 호스트 (콘솔)가 -register 스위치를 사용하여 (또는 관리자가 아닌 계정이나 UAC 제한 사항에 따라 -register : user를 사용하여) 이렇게하거나 regsvr32 유틸리티를 사용할 수 있습니다. 빌드 머신에서 나는 프로파일 러를 설치 한 후 후자를 선호하며 여러 버전의 프로파일 러에 의해 프로파일 링되는 여러 빌드가있는 경우에만 -register 스위치 만 사용합니다. HTH –

관련 문제