Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 让teamcity使用typemock运行单元测试_Unit Testing_Msbuild_Continuous Integration_Teamcity_Typemock - Fatal编程技术网

Unit testing 让teamcity使用typemock运行单元测试

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

我是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执行此操作

我认为您遇到了此错误,因为您没有配置TypeMock以使用MSTest运行测试。如果您的TeamCity Build Agent计算机中尚未执行此操作,您可以通过以下步骤执行此操作:

  • Windows“开始”>>所有程序>>类型模拟文件夹>>隔离器文件夹>>打开隔离器配置
  • 探查器/代码覆盖率
    选项卡下打开的新窗口中,选中复选框
    仅显示可用的探查器
    ,并在上面的下拉列表中列出NCover(假设您使用NCover分析单元测试用例覆盖率和所有)
  • 从下拉列表中选择NCover,然后单击带有TypeMock隔离器的链接
  • 通过这个TypeMock隔离器也将被配置为配置单元测试,我认为您的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>
    
    
    “C:\ProgramFiles(x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe”
    

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

    免责声明我在Typemock工作

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

    • 在TeamCity项目页面中,转到要更改的项目并点击设置
    • 在“设置”页面中,转到“生成参数”并选择“编辑”
    • 在编辑页面中,选择添加新参数
    • 在“类型”部分的编辑框中,选择环境变量(env.)
    • 在名称文本框中,输入Cor_Enable_Profiling
    • 在值文本框中输入0x1
    • 点击保存按钮
    再次重复上述步骤,但将环境变量的名称更改为COR_PROFILER,并将值更改为{B146457E-9AED-4624-B1E5-968D274416EC}

    这将导致TeamCity及其子进程(如msbuild)使用隔离器运行概要文件。
    再说一次,我认为这不是最好的解决方案,但它应该能为您解决问题。

    到底是什么问题?您是否收到错误消息?或者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在将来的版本中可能会更改,它将破坏构建。