2


0

私はTeam Foundation Buildを使ってxunit.net xunitタスクを呼び出しています。これは `/ platform:AnyCpu`ですが、私のTFSBuild.projのTeamBuild呼び出しは基本的なものです。

私はx64特有のテスト( `/ platform:x64 ')をいくつか持っていますが、それらはImageFormatExceptionを招きます。 x86とマークされたテストアセンブリもあります。

NUnitには、MSBuildタスクに対するプラットフォームスイッチがありますが、xunitにはありません。

私は以下のアプローチを考えることができます:

  1. xunitタスクを呼び出すために64ビットのmsbuild子タスクを呼び出す - ToolPathパラメータはありません。それで、それが良い考えであれば、子環境で渡すための最もクリーンなExecタスク構文は何ですか?

  2. 特別な場合xunit.console.x64による64ビットの呼び出し

  3. TeamBuild全体をx64に切り替え、x86を特殊なケースにします(ただし、needinnの逆の状況ではx86を特殊なケースにするだけです)。 (私はまた、カスタムタスクが正しいPROGRA〜…​ \ MsBuildディレクトリにあることを確認する必要があること以外は、おそらくもっと面倒になるでしょう)

このような問題の処理に成功した人は他にいますか?

1 Answer


4


xUnit.netはランナーと同じプロセス内で、別のAppDomainでテストを実行します。 MSBuildには32ビットのみのフラグが立てられているので、MSBuild xunitタスクで実行されるテストはすべて32ビットモードで実行する必要があります。

最も簡単な回避策は、MSBuildタスクを使用せず、代わりにコンソールランナーにシェルアウトすることです。 これにより新しいプロセスが作成されるため、デフォルトでは64ビットモードで実行されます。 また、1.5ベータ版を使用している場合は、32ビットモードを強制することができるEXE(xunit.console.x86.exe)が含まれています。 64ビットテストの問題