2

Team Foundation Build を使用して、xunit.net xunit タスクを呼び出していますが、これは/platform:AnyCpu.

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 ビット モードを強制できる EXE (xunit.console.x86.exe) が含まれており、32 ビットと 64 ビットのテストの問題を解決します。

于 2009-08-14T17:06:02.047 に答える