【发布时间】:2016-05-24 07:57:33
【问题描述】:
我们有在TFS Build process 期间构建和运行的单元测试。这是一个非常大的项目,构建时间很复杂。 msbuild .proj 文件中使用了一些参数,这些参数会传递给子项目等。
有时单元测试运行时需要其中一些 .proj 参数(只能在构建时知道)才能正常运行。
我的前任通过在构建时使用单元测试项目的 vcxproj 文件中的构建后事件(例如 ECHO SomethingINeedToKnow=True >> somefile )创建一个文件来管理此问题。
然后在运行时,AssemblyInitialize 事件上的单元测试 dll 会查找此文件并解析所需的值,将它们注入测试运行时。真的很巧妙。
但是,高级架构师不喜欢 hack,他们希望一切都以 Microsoft 的方式完成,如果可能的话。
所以我的问题是这样的:我是否有一种本机的、Microsoft 认可的方式将 vcxproj 在构建时继承的值传递到单元测试运行时?
我认为答案是否定的,当前的解决方案是最好的解决方案,但我想确定一下。
附言被测代码通常是非托管 C++,而单元测试项目是托管 C++ using namespace Microsoft::VisualStudio::TestTools::UnitTesting(我相信是 10.0)
【问题讨论】:
-
我不认为这是特定于测试的,这实际上是一个关于如何将参数传递给任何外部进程的问题,因为单元测试可能由 mstest.exe 执行。不幸的是,vanilla exec 任务似乎没有办法为您正在启动的进程设置环境变量。最后生成一个批处理文件可能是最好的方法。
标签: c++ unit-testing tfs msbuild tfsbuild