Unit testing 让teamcity使用typemock运行单元测试
我是TeamCity的新手,我正在尝试将其配置为构建和运行解决方案中的所有单元测试。对于不使用TypeMock的测试,它运行良好,但是对于使用TypeMock的测试,它失败了 我已经在typemock.org和stackoverflow上浏览了很多帖子,但是我没有得到任何明确的解决方案来解决这个问题 我现在所做的是 添加了我正在使用的程序集列表Unit testing 让teamcity使用typemock运行单元测试,unit-testing,msbuild,continuous-integration,teamcity,typemock,Unit Testing,Msbuild,Continuous Integration,Teamcity,Typemock,我是TeamCity的新手,我正在尝试将其配置为构建和运行解决方案中的所有单元测试。对于不使用TypeMock的测试,它运行良好,但是对于使用TypeMock的测试,它失败了 我已经在typemock.org和stackoverflow上浏览了很多帖子,但是我没有得到任何明确的解决方案来解决这个问题 我现在所做的是 添加了我正在使用的程序集列表 C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MsTest.exe C
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MsTest.exe
C:\TeamCity\AutoDeploy\TypeMock.dll
C:\TeamCity\AutoDeploy\TypeMock.MSBuild.dll
C:\BuildAgent\work\d0c2681a8633b717\www.Domain.Tests\bin\Release\qqq.Domain.Tests.dll
我缺少一些构建配置,但我不确定是否也必须为MSTest执行此操作我认为您遇到了此错误,因为您没有配置TypeMock以使用MSTest运行测试。如果您的TeamCity Build Agent计算机中尚未执行此操作,您可以通过以下步骤执行此操作:
探查器/代码覆盖率
选项卡下打开的新窗口中,选中复选框仅显示可用的探查器
,并在上面的下拉列表中列出NCover(假设您使用NCover分析单元测试用例覆盖率和所有)
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="RunTests" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="NCover.MSBuildTasks.NCover" AssemblyFile="C:\Program Files\NCover\Build Task Plugins\NCover.MSBuildTasks.dll" />
<Import Project ="C:\Program Files (x86)\Typemock\Isolator\6.1\TypeMock.MSBuild.Tasks" />
<PropertyGroup>
<MSTest>"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"</MSTest>
</PropertyGroup>
<Target Name ="RunTests">
<TypeMockStart Target="3.5" />
<Exec ContinueOnError="true" Command='$(MSTest) /noisolation "/testcontainer:C:\continuousintegration\root\CTM_VPOFFICEClassLibraries\CTM.VPOffice\CTM.VPOffice Unit Testing\bin\Release\CTM.VPOffice Unit Testing.dll"' />
<TypeMockStop />
</Target>
</Project>
“C:\ProgramFiles(x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe”
您可以忽略上面示例中与NCover相关的内容,如果您的构建过程中没有测试评测,则可以忽略隔离器配置步骤。免责声明我在Typemock工作 在您的情况下,最好的解决方案是使用某种构建脚本,如MSBuild或nant
如果未使用构建脚本,则可以将TeamCity进程设置为在启用隔离器的情况下运行。以下是执行此操作的步骤:
- 在TeamCity项目页面中,转到要更改的项目并点击设置
- 在“设置”页面中,转到“生成参数”并选择“编辑”
- 在编辑页面中,选择添加新参数
- 在“类型”部分的编辑框中,选择环境变量(env.)
- 在名称文本框中,输入Cor_Enable_Profiling
- 在值文本框中输入0x1
- 点击保存按钮
再说一次,我认为这不是最好的解决方案,但它应该能为您解决问题。到底是什么问题?您是否收到错误消息?或者TeamCity只是没有“看到”测试?TeamCity说TypeMock未启用请告诉我们确切的消息。TypeMock.TypeMockException:**TypeMock隔离器当前已禁用。使用以下命令启用:*在Visual Studio中:-使用Typemock Smart Runner-对于其他Runner,选择Typemock菜单并单击Resume Mocking*以作为自动化过程的一部分运行Typemock Isolator您可以:-通过TMockRunner.exe命令行工具运行测试-对MSBuild或NAnt使用“TypeMockStart”任务有关详细信息,请参阅文档(请参阅“在自动化生成中运行单元测试”)。我有疑问,我应该创建一个新的项目文件并向其中添加上述代码,还是应该将此代码附加到existin测试项目文件中?您不应该将其附加到*.csproj文件中。我假设TeamCity构建使用了不同的MSBuild项目文件,而TeamCity构建又在内部使用*.csproj或*.sln文件进行构建。在这种情况下,可以将其添加到该外部MSBuild项目文件中。如果没有,请添加一个,因为我觉得对*.csproj文件进行大量篡改是不好的。为什么不建议这样做?我给出答案已经有一段时间了,我不再在Typemock工作,所以现在情况可能不同了。然而,原因是,当您使用该方法时,您不能执行类似于使用其他探查器的操作。而且它太明确了。clsid在将来的版本中可能会更改,它将破坏构建。