让teamcity使用typemock运行单元测试

时间:2013-09-25 12:48:40

标签: 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:\TeamCity\AutoDeploy\TypeMock.dll
C:\TeamCity\AutoDeploy\TypeMock.MSBuild.dll
C:\BuildAgent\work\d0c2681a8633b717\www.Domain.Tests\bin\Release\qqq.Domain.Tests.dll

我缺少一些构建配置,但我不确定我是否必须为MSTest做这个

2 个答案:

答案 0 :(得分:3)

免责声明我在Typemock工作。

在您的情况下,最好的解决方案是使用某种类型的构建脚本,如MSBuild或nant
如果您没有使用构建脚本,则可以将TeamCity进程设置为在启用Isolator的情况下运行。以下是执行此操作的步骤:

  • 在TeamCity项目页面中,转到您要更改的项目,然后点击“设置”。
  • 在设置页面中,转到构建参数并选择编辑。
  • 在编辑页面中选择添加新参数。
  • 在“类型”部分的编辑框中,选择“环境变量(环境)”
  • 在名称文本框中输入Cor_Enable_Profiling
  • 在值文本框中输入0x1
  • 点击“保存”按钮

重复上述步骤,但将环境变量的名称更改为COR_PROFILER,将值更改为{B146457E-9AED-4624-B1E5-968D274416EC}

这将导致TeamCity及其子进程(如msbuild)使用Isolator进行概要分析。 同样,我不认为这是最好的解决方案,但它应该为你做好工作。

答案 1 :(得分:0)

我认为你是因为这个错误,因为你没有配置TypeMock来使用MSTest来运行测试。如果您没有在TeamCity Build Agent计算机中执行此操作,请执行以下步骤:

  1. Windows“开始”>>所有程序>> TypeMock文件夹>>隔离器文件夹>>打开隔离器配置
  2. Profilers/Code Coverage选项卡下打开的新窗口中,选中复选框Show only available profilers,然后在上面的下拉列表中列出NCover(假设您使用NCover进行分析单元测试用例覆盖率和所有)。
  3. 从下拉菜单中选择NCover,然后点击Link with TypeMock Isolator
  4. 通过这个TypeMock Isolator将被配置为配置单元测试,并且我认为你的TypeMock禁用问题将得到解决我希望。

    修改

    抱歉错误点。如果您在构建中使用NCover等分析器,上述内容将对您有所帮助。

    您应该使用以下MSBuild来使用MSTest和TypeMock运行测试:

    <?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>
    

    您可以忽略上述示例中与NCover相关的内容,如果您的构建过程中没有测试性能分析,则忽略隔离器配置步骤。