2011-02-01 7 views
3

기본적으로 Teamcity 용 NUnit 플러그인 (프로그램을 사용하는 특정 빌드 단계는 아님)을 사용하여 코드 범위에 대한 NCover와 함께 단위 테스트를 실행하고, 단위 테스트에서 TypeMock 6을 사용하므로 저것은 너무 일하고.NCover와 TypeMock을 모두 통합하여 TeamCity에서 NUnit 테스트를 실행 하시겠습니까?

  • 그냥 기본적으로 내 DLL 년대에 인 TeamCity NUnit과 구축 단계를 가리키는하지만 다음과 같은 오류 메시지와 함께 실패합니다 :

    은 지금까지 해봤

    Typemock 아이솔레이터가 필요 다음 중 하나를 실행하려면 Coverage Tool과 연결되어 있어야합니다.

    1. Typemock Isolator 구성을 통한 Coverage 도구

      : TMockRunner.exe를 통해
    2. 실행 테스트는
  • 오른쪽 명령 줄을 알아 내려고 링크로 MSBuild를 또는은 NAnt에 대한

  • 사용 TypeMockStart 작업을 -link, 나는이 시도

    C : ... \ Isolator \ 6.0 \ TMockRunner.exe "C : \ TeamCity ... \ JetBrains.BuildServer.NUnitLauncher.exe"v4.0 MSIL NUnit-2.5.9 MyAssembly.dll

    정확히 같은 오류로 실패합니다.

  • TypeMock의 mocking_on.bat 파일 부분에있는 환경 변수를 설정하면 결과가 변경되지 않습니다. 위의 예는 NCover (아직)에 대한 참조를 포함하지 않는

참고, 그게 내가 위의 예제와 함께 몇 시간에 대한 명령 줄에 주위 해킹 아직하지 않은 봤는데 때문이다 기본 단위 테스트를 실행했습니다. NCover는 TeamCity의 nunit-launcher에 대한 추가 옵션이므로이 기능을 사용하면 간단하게 사용할 수 있습니다.

+0

[TeamCity 포럼] (http://devnet.jetbrains.net/community/teamcity/teamcity?view=discussions)에서 더 많은 질문을 할 수 있습니다. – adrianbanks

답변

4

TypeMock은 자체 러너 프로그램 인 TMockRunner를 사용해야하므로 TeamCity의 GUI 옵션을 사용하여 모든 설정을 수행 할 방법이 없습니다.

대신, 내가 처음이 내용으로 사용자 지정 MSBuild에서 파일을 구축하는 것이었다하고 결국 무엇을 :

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
     <TypeMockLocation>C:\Program Files (x86)\TypeMock\Isolator\6.0</TypeMockLocation> 
     <NUnit>"C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher.exe"</NUnit> 
     <NCover>C:\Program Files (x86)\NCover\NCover.Console.exe</NCover> 
    </PropertyGroup> 
    <Import Project="$(TypeMockLocation)\TypeMock.MSBuild.Tasks"/> 
    <Target Name="TestWithTypeMock"> 
     <TypeMockStart Link="NCover3.0" ProfilerLaunchedFirst="true" Target="2.0"/> 
      <Exec ContinueOnError="true" Command="$(NUnit) v2.0 x86 NUnit-2.5.9 SqlDatabases.Core.Tests\bin\Debug\SqlDatabases.Core.Tests.dll SqlDatabases.SqlServer.Tests\bin\Debug\SqlDatabases.SqlServer.Tests.dll /ncover:%22$(NCover)%22 /ncover-arg://ias /ncover-arg:SqlDatabases.Core /ncover-arg://ias /ncover-arg:SqlDatabases.SqlServer /ncover-arg://et /ncover-arg:.*Exception /ncover-arg://x /ncover-arg:c:\temp\coverage.xml"/> 
     <TypeMockStop/> 
    </Target> 
</Project> 

내 인 TeamCity 서버의 디렉토리에이 파일을 저장. 테스트 스크립트가 내 저장소에 포함되기를 원하지 않았기 때문에 소스 제어에 추가하지 않았습니다. Visual Studio 내에서 테스트를 만들고 마우스 오른쪽 단추로 클릭하고 실행할 수 있습니다. 서버를 만들면 나중에 결정을 바꿀 수 있습니다.) 또한 TeamCity 서버에 대한 빌드 에이전트는 1 개 밖에 없으므로 당분간은 나에게 적합합니다.위의 파일뿐만 아니라

, 나는 다음과 같은 배치 파일 추가 :

@echo off 
setlocal 
set CURDIR=%CD% 
copy c:\dev\sqldatabases\tests.msbuild .\ 
msbuild tests.msbuild /target:TestWithTypeMock 
rd /s /q c:\dev\sqldatabases\codecoverage 
md c:\dev\sqldatabases\codecoverage 
"c:\program files\ncover\ncover.reporting.exe" c:\temp\coverage.xml //or FullCoverageReport:Html:c:\dev\sqldatabases\codecoverage 
cd \dev\sqldatabases\codecoverage 
del %CURDIR%\coverage.zip 
7z a -r %CURDIR%\coverage.zip 

을 그리고 난 내 인 TeamCity 빌드 구성에 다음과 같은 두 가지 빌드 단계를 추가 :

  1. 비주얼 스튜디오 솔루션 : 디버그 구성을 작성하십시오.
  2. C를 실행합니다 : \ 데브 \ SqlDatabases Tests.bat (위의 배치 파일) \
내가 coverage.zip 내 빌드 구성에 유물 아래에 나열된 것을 확인했다

, 그리고 지금 가지고 코드 커버리지, typemock하고, 단위 테스트.

내가 지금까지 어떻게해야하는지 알지 못했다면, 정상적인 TeamCity GUI를 사용하여 (TypeMock 제외) 모든 것을 설정하는 빌드 구성 결과를 클릭하면, 코드 커버리지를 얻게된다. 짧은 요약은 위의 설정에는 없지만 전체 보고서는 TeamCity 빌드의 탭에 표시됩니다.

이렇게하면 누군가 다른 사람을 구제 할 수 있기를 바랍니다.

0

라세,

그래서 당신이 바로 믹스에 Typemock을 던지는 해본 적이 할려고 했었죠 실행하는 선택의 간단한 문제를해야 NCover 범위로 실행되는 인 TeamCity GUI를 사용하는 등, 그래서 나는 그것이 어떻게 진행되는지 듣기를 고대합니다.

+0

TypeMock을 사용하면 모든 것을 실행해야하므로 GUI에서이 작업을 수행 할 수 없습니다. 나는 그것을하는 방법을 알아 낸 이후로 지금 내 자신의 대답을 추가 할 것입니다. –