首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让TeamCity运行NUnit测试,同时集成NCover和TypeMock?

让TeamCity运行NUnit测试,同时集成NCover和TypeMock?
EN

Stack Overflow用户
提问于 2011-02-01 15:13:27
回答 2查看 1.5K关注 0票数 3

基本上,我希望使用NUnit插件来运行我的单元测试(这个程序不一定是使用它的特定构建步骤),使用NCover来进行代码覆盖,而且由于我的单元测试使用TypeMock 6,所以我也需要这样做。

到目前为止,我已经尝试过:

  • 只是将TeamCity NUnit构建步骤指向我的dll,但这在以下错误消息中失败:

需要将Typemock隔离器与覆盖工具链接以运行,以便执行以下操作之一:

代码语言:javascript
复制
1. link the Coverage tool through the Typemock Isolator Configuration
2. run tests via TMockRunner.exe -link
3. use TypeMockStart tasks for MSBuild or NAnt with Link 

  • 试图找出正确的命令行,我尝试了如下:

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

这与完全相同的错误失败。

  • 设置在TypeMock的mocking_on.bat文件部分中找到的环境变量,这不会改变结果。

请注意,上面的示例不包含对NCover的任何引用(尚未),这是因为我已经在命令行上使用了几个小时,而且还没有运行基本的单元测试。NCover是TeamCity的nunit启动程序的额外选项,所以我希望当我走到这一步时,这就像启用它一样简单。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-01 17:44:13

由于TypeMock要求您使用他们自己的运行程序TMockRunner,所以不可能仅仅使用TeamCity中的GUI选项来设置所有内容。

相反,我最后所做的是首先构建一个具有以下内容的自定义msbuild文件:

代码语言:javascript
复制
<?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中构建、右键单击并运行测试,如果我得到一些与构建服务器不太相关的内容,我可能稍后会更改这个决定)。而且,我的TeamCity服务器只有一个构建代理,所以这暂时适用于我。

除了上面的文件外,我还添加了以下批处理文件:

代码语言:javascript
复制
@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构建配置中:

configuration.

  • Execute
  1. Visual解决方案:构建调试
  2. C:\Dev\SqlDatabases\Tests.bat (上面的批处理文件)

我确保在构建配置中的工件中列出了coverage.zip,现在我得到了代码覆盖率、类型锁和单元测试。

到目前为止,我唯一还没有搞清楚的是,如果我单击使用普通TeamCity GUI设置所有东西(减去TypeMock)的构建配置的生成结果,我会得到一个代码覆盖率简短摘要,这在上面的设置中是不存在的,但是完整的报告是,以及TeamCity构建结果中的选项卡。

希望这能给别人省点麻烦。

票数 4
EN

Stack Overflow用户

发布于 2011-02-01 16:52:16

拉塞,

只要您使用的是TeamCity图形用户界面,使用NCover覆盖率运行应该只是一个简单的问题,选择使用它运行。我从未尝试过将Typemock添加到其中,所以我很期待听到这方面的进展。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4864266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档