2009-08-14 3 views
2

Team Foundation Build를 사용하여 xunit.net xunit 작업 (/platform:AnyCpu)을 호출하지만 TeamBuild 호출은 TFSBuild.proj의 바닐라입니다.TeamBuild의 x64 [xunit.net 테스트 용] 부분 실행

x64 특정 테스트 (`/ platform : x64 ')가 있으며 ImageFormatException으로 막힙니다. 또한 x86으로 표시된 테스트 어셈블리가 있으므로 전체 또는 일부가 될 수 없습니다.

NUnit에는 MSBuild 작업의 플랫폼 스위치가 있습니다. xunit doesnt.

나는 다음과 같은 방법을 생각할 수

:

  1. 는 xUnit의 작업을 호출하는 64 비트 msbuild를 자식 작업을 호출 - 공구 경로의 PARAM이 밤은을 즉, 무엇이 가장 깨끗한 Exec에서 작업 구문 좋은 생각이 있다면 그렇게 그걸하기 위해서, 자식 환경을 지나가는거야?
  2. 특별한 경우 xunit.console.x64를 사용하여 64 비트를 호출
  3. 전체 TeamBuild를 x64로 전환하고 특수한 경우 x86을 전환합니다 (x86의 특별한 경우에는 needinn의 역행 상황에 해당합니다) . 다른 사람이 무엇

(나는 또한, 아마 더 번거 로움이있을 것이라고 확신 사용자 지정 작업이 바로 PROGRA ~ ... \ MSBUILD의 디렉토리에 확인하는 것보다 다른 가정) 처리 문제에 등으로 성공을 거두었 이?

답변

4

xUnit.net은 별도의 AppDomain에서 러너와 동일한 프로세스 내에서 테스트를 실행합니다. MSBuild는 32 비트 전용으로 플래그가 지정되므로 MSBuild xunit 태스크로 실행되는 모든 테스트는 32 비트 모드로 실행되어야합니다.

가장 간단한 해결 방법은 MSBuild 작업을 사용하지 않고 콘솔 러너를 쉘 아웃하는 것입니다. 이 프로세스는 새로운 프로세스를 생성하기 때문에 기본적으로 64 비트 모드로 실행됩니다. 또한 1.5 베타 버전을 사용하는 경우 32 비트 모드 (xunit.console.x86.exe)를 강제 실행할 수있는 EXE가 포함되어있어 32 비트 테스트 문제와 64 비트 테스트 문제를 해결할 수 있습니다.

+0

옵션을 확인해 주셔서 감사합니다. TeamBuild는 VS08SP1에서 매우 x86 중심이지만 msbuild 자체에는 x64 변형이 있습니다. 그래서 지금은 옵션 1을 사용했습니다. Framework64 msbuild의 exec를 수행 한 다음 x64 모드에서 [anycpu] xunit 작업을 실행하고 원하는대로 실행합니다. 이것은 이미 MSBuild MSBuild 태스크를 사용하여 ItemGroup의 테스트 어셈블리 집합을 반복 할 때 내 컨텍스트에서 가장 잘 작동합니다. ...이게 말이 되니? –

관련 문제