【问题标题】:Unit tests aren't run with multiple build configurations in TFS 2010单元测试在 TFS 2010 中不使用多个构建配置运行
【发布时间】:2011-09-26 06:44:03
【问题描述】:

我在我的 TFS 构建过程中使用 MSBuild,使用 DefaultTemplate 构建同一解决方案的多个配置(调试/发布)。当我仅构建发布或仅调试时,会运行单元测试,但是当我使用两种配置运行构建时,单元测试不会运行。

当我运行多个配置时,我将它们中的每一个都定义在 Process-> Items to Build-> Configurations to Build 下的构建定义中,即 Mixed Platforms|Release,Mixed Platforms|Debug。当我运行单个配置时,我使用的是混合平台|发布或混合平台|调试。

我无法将整个日志放在这里(超过 6000 行),但它似乎没有找到任何 testAssemblies。

编辑:

以下是日志的实际部分。我不确定搜索路径根中 Mixed Platforms\Release 的来源。

我还应该补充一点,我们编译到 Source 的文件夹中,因为我们的一些脚本只能在该布局中工作。

仅调试(有效)

为测试程序集运行 MSTest C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe /nologo /usestderr /testSettings:"C:\Builds\6\ProductName\BuildName\Sources\Product\Local.testsettings" /searchpathroot :"C:\Builds\6\ProductName\BuildName\Sources" /resultsfileroot:"C:\Builds\6\ProductName\BuildName\TestResults" /testcontainer:"C:\Builds\6\ProductName\BuildName\Sources\Test \UnitTestCommon\bin\Debug\UnitTestCommon.dll" /testcontainer:"C:\Builds\6\ProductName\BuildName\Sources\Test\UnitTestCommon\bin\Release\UnitTestCommon.dll" /testcontainer:"C:\Builds\6 \ProductName\BuildName\Sources\Test\UnitTestWCF\bin\Debug\UnitTestWCF.dll" /testcontainer:"C:\Builds\6\ProductName\BuildName\Sources\Test\UnitTestWCF\bin\Release\UnitTestWCF.dll" /publish :"http://dctfs2010.company.dc:8080/tfs/Product" /publishbuild:"vstfs:///Build/Build/964" /teamproject:"ProductName" /platform:"混合平台" /flavor:"调试” 正在加载 C:\Builds\6\ProductName\BuildName\Sources\Product\Local.testsettings... 正在加载 C:\Builds\6\ProductName\BuildName\Sources\Test\UnitTestCommon\bin\Debug\UnitTestCommon.dll... 正在加载 C:\Builds\6\ProductName\BuildName\Sources\Test\UnitTestCommon\bin\Release\UnitTestCommon.dll...

调试和发布(不起作用)

为测试程序集运行 MSTest C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe /nologo /usestderr /testSettings:"C:\Builds\6\ProductName\BuildName\Sources\Product\Local.testsettings" /searchpathroot :"C:\Builds\6\ProductName\BuildName\Sources\Mixed Platforms\Release" /resultsfileroot:"C:\Builds\6\ProductName\BuildName\TestResults" /testcontainer:"C:\Builds\6\ProductName\ BuildName\Sources\Test\UnitTestCommon\bin\Debug\UnitTestCommon.dll" /testcontainer:"C:\Builds\6\ProductName\BuildName\Sources\Test\UnitTestCommon\bin\Release\UnitTestCommon.dll" /testcontainer:"C :\Builds\6\ProductName\BuildName\Sources\Test\UnitTestWCF\bin\Debug\UnitTestWCF.dll" /testcontainer:"C:\Builds\6\ProductName\BuildName\Sources\Test\UnitTestWCF\bin\Release\UnitTestWCF .dll" /publish:"http://dctfs2010.company.dc:8080/tfs/Product" /publishbuild:"vstfs:///Build/Build/962" /teamproject:"ProductName" /platform:"混合平台" /flavor:"释放" 找不到目录“C:\Builds\6\ProductName\BuildName\Sources\Mixed Platforms\Release”。

【问题讨论】:

  • 他们根本没有运行?为什么不?构建日志说明了什么?
  • 您能否更详细地解释一下“运行构建”的含义以及您如何准确地指定多个配置?是 IDE 还是命令行、解决方案还是项目...?

标签: unit-testing tfs msbuild


【解决方案1】:

如果您单击解决方案的属性(您在构建过程中构建的解决方案)。您将拥有配置管理器。在配置管理器中,您将能够看到“调试”、“已发布”、“混合”等您可能定义的任何其他配置。你能看到测试项目被检查为在混合配置中构建吗?如果未构建,则 test.dll 将不可用,这意味着 MSBuild 将没有任何要运行的测试。

另一种验证测试未运行原因的方法是查看构建放置目录,看看是否可以在其中看到 test.dll。如果 test.dll 不存在,那么问题在于您如何在配置管理器中配置项目。

【讨论】:

  • 感谢您的帮助,我想通了:D
【解决方案2】:

原来我的 outputDirectory 设置错误,无法编译我们的项目。这就是 searchpathroot 问题的由来。

【讨论】:

  • 您是指通常为**\*test*.dll 的“测试程序集文件规范”吗?你到底改变了什么?对于一个接受的答案,它并没有那么有帮助。
猜你喜欢
  • 2013-12-12
  • 1970-01-01
  • 2011-07-06
  • 2012-12-26
  • 1970-01-01
  • 2018-05-04
  • 2011-01-29
  • 1970-01-01
  • 2010-09-22
相关资源
最近更新 更多