2

使用 Team Foundation Build,我正在调用 xunit.net xunit 任务,/platform:AnyCpu但我对 TFSBuild.proj 的 TeamBuild 调用是普通的。

我有许多特定于 x64 的测试(`/platform:x64'),它们被 ImageFormatException 阻塞。我还有一个标记为 x86 的测试组件,因此它不能是全部或全部。

NUnit 在 MSBuild 任务上有一个平台开关,xunit 没有。

我可以想到以下方法:

  1. 调用 64 位 msbuild 子任务来调用 xunit 任务 - 没有 ToolPath 参数,所以如果这是个好主意,那么在子环境中传递的最干净的 Exec 任务语法是什么?
  2. 使用 xunit.console.x64 调用 64 位的特殊情况
  3. 将整个 TeamBuild 切换到 x64 和特殊情况下的 x86 (但这只是让我处于相反的情况下需要 x86 的特殊情况下)。(我还假设除了必须确保自定义任务在正确的 PROGRA~...\MsBuild 目录中之外,可能会更麻烦)

其他人在处理此类问题方面取得了哪些成功?

4

1 回答 1

4

xUnit.net 在与运行程序相同的进程中运行其测试,在单独的 AppDomain 中。由于 MSBuild 被标记为仅 32 位,因此使用 MSBuild xunit 任务运行的任何测试都必须在 32 位模式下运行。

最简单的解决方法是不使用 MSBuild 任务,而是使用控制台运行程序。由于这会创建一个新进程,因此默认情况下它将以 64 位模式运行。此外,如果您使用的是 1.5 测试版,我们已经包含了可以强制 32 位模式 (xunit.console.x86.exe) 的 EXE,它可以解决您的 32 位与 64 位测试问题。

于 2009-08-14T17:06:02.047 回答