TFS 2010中不支持使用多个构建配置来运行单元测试。

3
我在TFS Buildprocess中使用DefaultTemplate使用MSBuild来构建同一解决方案的多个配置(Debug/Release)。当我只构建发布版或调试版时,会运行单元测试,但是当我同时运行两个配置时,单元测试不会运行。
当我运行多个配置时,我将它们定义在构建定义下的Process->Items to Build->Configurations to Build中,即Mixed Platforms|Release,Mixed Platforms|Debug。当我运行单个配置时,我使用Mixed Platforms|Release或Mixed Platforms|Debug。
我无法在此处放置整个日志(它超过6000行),但它似乎找不到任何testAssemblies。
编辑:
以下是日志的实际部分。我不确定在searchpathroot中从哪里来的Mixed Platforms\Release。
我还应该添加,我们编译到我们的Source文件夹中,因为我们的一些脚本仅在那种布局中工作。
仅调试版(可行):
运行Test Assemblies的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:"Mixed Platforms" /flavor:"Debug" 正在加载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:"Mixed Platforms" /flavor:"Release" 目录"C:\Builds\6\ProductName\BuildName\Sources\Mixed Platforms\Release"未找到。

它们根本没有运行?为什么?构建日志显示了什么? - John Saunders
1
你能详细解释一下“运行构建”是什么意思,以及你是如何指定多个配置的吗?是通过IDE还是命令行,是针对解决方案还是项目...? - Brian Kretzler
2个回答

0

如果您点击解决方案的属性(作为构建的一部分),您将会看到配置管理器。在配置管理器中,您将能够看到“调试”、“发布”、“混合”等任何其他您可能定义的配置。您能否看到测试项目被选中以在混合配置下进行构建?如果没有进行构建,则 test.dll 将不可用,这意味着 MSBuild 将没有任何测试可以运行。

另一种验证测试未运行的原因的方法是查看生成的输出目录,并查看是否可以看到 test.dll。如果 test.dll 不在那里,那么问题就出在您如何在配置管理器中配置项目上。


谢谢帮助,我已经解决了 :D - John Neville

0
原来我的outputDirectory设置有误,与我们项目的编译方式不符。这也是searchpathroot问题的根源所在。

2
你是指通常为 **\*test*.dll 的“测试程序集文件规范”吗?你具体改变了什么?对于一个“已接受的答案”,它并不是那么有帮助。 - mbx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接