使用.runsetting单元测试文件,TFS2015 503服务不可用

时间:2016-05-03 13:58:43

标签: unit-testing build code-coverage tfs2015

简而言之,在TFS 2015的构建步骤中使用.ununting unit测试文件会导致503 Service Unavailable异常。

经过对新TFS 2015安装的广泛搜索和测试(如TFS2015 new install, 503 Service Unavailable中所述),我可能已经发现了问题。

我们正在https://msdn.microsoft.com/en-us/library/jj159530.aspx中使用.runsettings文件,在Visual Studio测试'在我们新的TFS2015安装上构建一步,一旦调用VSTest.console.exe,TFS服务器上的下三个应用程序池就会崩溃,从而导致503 Service Unavailable错误:

  1. 默认应用
  2. Microsoft Team Foundation Server应用程序池
  3. Microsoft Team Foundation SErver Message Queueu应用程序池
  4. 首先我的.runsetting文件有点大,但我确实尝试了下一个(我认为尽可能小):

    <?xml version="1.0" encoding="utf-8"?>
    <RunSettings>
      <!-- Configurations for data collectors -->
      <DataCollectionRunSettings>
        <DataCollectors>
          <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
            <Configuration>
              <CodeCoverage>
                 <!-- Match assembly file paths: -->
                 <ModulePaths>
                    <Include>
                       <ModulePath>.*\.dll$</ModulePath>
                       <ModulePath>.*\.exe$</ModulePath>
                    </Include>
                  <Exclude>
                    <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
                    <ModulePath>.*fluentassertions.*</ModulePath>
                    <ModulePath>.*\.test\.dll$</ModulePath>
                  </Exclude>
                </ModulePaths>
              </CodeCoverage>
            </Configuration>
          </DataCollector>
        </DataCollectors>
      </DataCollectionRunSettings>
    </RunSettings>
    

    使用此版本时,应用程序池崩溃。即使我完全删除了部件,也无法使用。

    一旦调用下一行(从构建步骤的日志行中取出),应用程序池就会崩溃。

    Executing C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe "D:\TfsAgents\Agent1\_work\2\s\[...]\Release\Microsoft.QualityTools.Testing.Fakes.dll" "D:\TfsAgents\Agent1\_work\2\s\[...]\Release\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll" "D:\TfsAgents\Agent1\_work\2\s\[...]\Release\MyClassLib.dll"  /Settings:"D:\TfsAgents\Agent1\_work\2\s\[...]\test.runsettings" /EnableCodeCoverage /logger:trx
    

    如果查看.runsettings文件中的DataCollector标记,您会看到版本设置为14.0.0.0。如果你查看Miscrosoft的页面,他们说它应该是11.0.0.0,但是这个版本也不起作用。我认为版本11.0.0.0可能是错的,所以我用Telerik JustDecompile打开了dll,看到了真正的&#39;版本是14.0.0.0,所以我将该版本放入runsetting-file。但没有运气。

    所以现在我只是从构建的定义中删除了runsetting文件,遗憾的是导致错误的代码相关百分比。所以希望有人可能有这个答案。

1 个答案:

答案 0 :(得分:0)

与IIS服务器托管TFS的同一台计算机上运行的构建代理一起使用时,此问题仅限于特定的runsettings文件。有一个解决方法可用。在runsettings文件中的DataCollectors-&gt; Configuration-&gt; CodeCoverage标记内,您可以添加以下具有给定值的xml标记:

SELECT sum(Column) FROM tablethatIwantthevalues;

这应该可以解决这个问题,并且还建议将来如果您在Data Collector中使用带有代码覆盖率的runsettings文件,那么应该添加这些标记。