【问题标题】:MSTest.exe exited with ExitCode 1MSTest.exe 以 ExitCode 1 退出
【发布时间】:2012-12-06 09:24:33
【问题描述】:

我通过手动调用 mstest.exe 从 msbuild/tfsbuild 手动运行测试,但它意外失败,错误 MSB3073 和 ExitCode 1 当我期待 0 时。

我有这个目标,它在 $(OutDir) 文件夹中搜索所有后缀为 *UnitTests.DLL 的 DLL。它构建了一个命令行语句,然后执行:

<Target Name="RunUnitTests">
      <CreateItem Include="$(OutDir)\*.UnitTests.dll" 
                  AdditionalMetadata="TestContainerPrefix=/testcontainer:">
          <Output TaskParameter="Include" 
                  ItemName="UnitTestAssemblies" />
      </CreateItem>

      <Exec Timeout="120000" 
            Command="&quot;$(VS110COMNTOOLS)..\IDE\mstest.exe&quot; @(UnitTestAssemblies->'%(TestContainerPrefix)&quot;%(FullPath)&quot;',' ') /testsettings:&quot;$(OutDir)..\..\Sources\mysettings.testsettings&quot;" >
          <Output TaskParameter="ExitCode" PropertyName="ExitCode"/>
      </Exec>

     <Error Condition=" '$(ExitCode)' != '0' And '$(ExitCode)' != '2'" Text="An error [$(ExitCode)] occurred running unit tests." />
     <OnError ExecuteTargets="MarkBuildStepAsFailed" />
</Target>

我在上面添加了一个 Timeout 属性,因为一些谷歌搜索建议这样做,但它没有任何区别。

这在构建日志文件中等同于如下(包括引号)(我更改了文件夹名称,但在相关的地方留下了空格,但它们看起来不太长):

"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\..\IDE\mstest.exe" /testcontainer:"C:\b\someprojectfolder\anotherfolder\Binaries\..\..\debug\some.unittests.dll" /testsettings:"C:\b\someprojectfolder\anotherfolder\Sources\..\..\mysettings.testsettings"

测试确实作为构建过程的一部分在构建服务器上运行(即调用上面的目标),因为我可以看到在磁盘上创建了测试结果文件夹。所有单元测试都按预期通过。我也可以在构建日志中看到 MSTest.exe 控制台输出(例如,开始执行、测试和结果列表、结果文件已列出等)

此外,我可以将 RDC 作为构建服务帐户安装到构建服务器上,并使用 CMD 手动运行上面的命令行,它可以工作。 (测试结果(*.trx)和文件夹在那里)。

当我像我自己一样在本地开发人员机器上使用 CMD 手动调用上面的命令行时,它们也可以工作。它会创建测试结果文件和文件夹。

仅供参考,我们在我的本地计算机上使用 Visual Studio 2012 Ultimate,并且也安装在构建服务器上。

仅供参考,我们正在使用带有升级过程定义的 TFS 2012

我感觉它与引号和/或撇号的“解析”/转义有关,或者可能是在路径中使用 ..\?

我检查了构建服务器上的事件日志,它没有显示任何错误/信息。我可以检查其他任何日志吗?或我可以定义以“查看”实际错误代码的属性?

注意:我知道我可以使用 &lt;RunTest&gt; 样式的 msbuild/tfs 构建语法,但我会在构建过程中更方便的时间手动触发这些测试

【问题讨论】:

    标签: unit-testing msbuild mstest tfsbuild


    【解决方案1】:

    这与路径中的引号或撇号无关。我的 .testsettings 文件连接到远程测试控制器(在另一台运行 Windows Server 2008 R2 的服务器上)。我正在收集所有数据和诊断信息(录像机等、网络仿真、事件日志、系统诊断等)

    当我检查测试控制器/代理服务器上的事件日志时,它充满了错误,说 MSTest 必须以管理权限运行。这就是我现在正在调查的内容。

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 2018-08-31
      相关资源
      最近更新 更多