64비트 운영체제에서 32비트 NUnit 단위테스트하기

  • Post author:
  • Post category:
  • Post comments:0 Comments
  • Post last modified:March 14, 2008

NUnit 2.4.6을 보면 바이너리 파일이 둘로 나뉘어 있다. nunit-console.exe 파일이 있는가 하면 nunit-console-x86.exe도 있다. 뒤에 x64 윈도우에서 x86 단위테스트를 돌리고 싶다면, 뒤에 -x86가 붙은 바이너리를 실행시키면 된다. 만약 x86 바이너리를 따로 제공하지 않는 이전 버전을 쓰고 있더라도 좌절할 필요 없다. 다 방법이 있다.

이어서 설명하기 전에 이 방법은 nunit testing 32-bit apps on 64-bit machine란 글을 보고 알았다는 걸 밝혀둔다.

C:\%gt;corflags "C:\Program Files (x86)\NUnit-Net-2.0 2.2.9\bin\nunit-console.exe"

corflags.exe 는 버전 2.0 이상의 닷넷 프레임워크 SDK 에 포함되어 있다. 위와 같이 인자로 바이너리 파일의 경로를 넘기면, corflags는 해당 파일이 32비트용으로 지정되어 있는지 그렇지 않은지 알려준다. 32비트용으로 지정되어 있지 않으면 64비트 윈도우는 그 바이너리를 64비트 모드로 돌린다. 이 경우엔 32비트 모드로 단위테스트를 실행해야 하므로, 32비트용이라는 표시를 해줘야 하는데, 그리 어렵지 않다.

C:\%gt;corflags "C:\Program Files (x86)\NUnit-Net-2.0 2.2.9\bin\nunit-console.exe" /32BIT+

이게 끝이다.

MSTest의 경우

MSTest는 x64 단위테스트를 지원하지 않는다라고 했었다. 하지만 corflags.exe가 있는 이상 상황은 달라진다. corflags.exe를 사용해 MSTest.exe 파일이 32비트용 바이너리란 표시만 없애면 문제가 해결될지 모른다. 나름 괜찮은 생각이었고, 이것만 된다면 기존에 MSTest로 짠 단위테스트 코드를 NUnit 코드로 바꾸지 않아도 될테니 마음이 들떴다.

하지만 결론부터 말해 이 방법은 안 먹힌다. NUnit과 달리 MSTest는 강력한 이름(strong name)으로 서명이 되어 있다. corflags를 이용해 MSTest 바이너리를 바꾸게 되면 서명이 사라지기 때문에 런타임시에 오류가 발생한다.

Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments