gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:03:01 26 4
gpt4 key购买 nike

基本上我想使用 TeamCity 的 NUnit 插件(程序,不一定是使用它的特定构建步骤)来运行我的单元测试,使用 NCover 进行代码覆盖,并且由于我的单元测试使用 TypeMock 6,我也需要它工作。

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

  • 基本上只是将 TeamCity NUnit 构建步骤指向我的 dll,但失败并显示以下错误消息:

    Typemock Isolator needs to be linked with Coverage Tool to run, to enable do one of the following:

    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:...\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 的额外选项,所以我希望这就像在我到达那一步时启用它一样简单。

最佳答案

由于 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. Visual Studio 解决方案:构建调试配置。
  2. 执行C:\Dev\SqlDatabases\Tests.bat(上面的批处理文件)

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

到目前为止我唯一没有弄清楚的是,如果我单击使用普通 TeamCity GUI 设置所有内容(减去 TypeMock)的构建配置的构建结果,我得到的代码覆盖率很短摘要列出,这在上面的设置中不存在,但完整的报告存在,并且 TeamCity 构建结果中的选项卡。

希望这可以为其他人省去一些麻烦。

关于nunit - 让 TeamCity 运行 NUnit 测试,同时集成 NCover 和 TypeMock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4864266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com