2012-11-19 2 views
2

Visual Studio 2012로 작업 중이며 Visual Studio의 테스트 프레임 워크 (mstest)를 사용하여 일부 통합 테스트를 개발 중입니다.Visual Studio 테스트, Process.Start, SQLCMD 및 Windows 명령 프로세서 오류

몇 일 전에 지금은 비주얼 스튜디오 2012을 많이 단순화하기 위해 출력 디렉토리에있는 테스트 (디버그 \ 즉 빈, 빈 \ 출시)와 내가 장애인 배포를 실행할 수에 관한 몇 가지 정보를 발견 사물의. 것들의 대부분은 예상대로 작동하지만

, 나는 큰 문제가 발견 : 일부 [ClassInitialize] 코드는 단지 배포을 해제 한 후, Process 클래스를 사용하여 프로세스를 실행하고 프로세스가 시작될 때마다,이 오류가 발생합니다 :

enter image description here

내 첫 인상은 공정 발사 어쩌면 뭔가가 잘못이고 나는 CMD에 동일한 명령 및 인수를 붙여 넣은 복사이었다 예상대로 일했다.

몇 가지 조사를 마친 후 왜 이런 일이 발생했는지 알아 냈습니다. 테스트 러너를 64 비트 프로세스로 시작하도록 구성했기 때문입니다. X86으로 전환 한 후 예를 들어 Process.Start("cmd")이 작동했습니다.

하지만 더 나쁜 것은 입니다. SQLCMD - 테스트 실행 중에 실행되는 실제 프로세스는 여전히 소위 오류로 실패합니다.

이 오류는 Visual Studio 테스트 러너에서 프로세스가 시작될 때 발생합니다.

테스트 러너에서 시작할 때 SQLCMD는 어떻게됩니까?

답변

1

많은 시련과 오류가 있은 후 마침내 문제가 해결되었습니다.

  • 이제 64 비트 프로세스로 테스트를 실행할 수 있습니다 (이 문제가 주된 문제라고 생각했지만 실수였습니다!).
  • 출력 디렉토리에서 테스트를 실행할 수 있습니다!

하지만 올바르게 변경하려면 무엇을해야합니까? .runsettings 파일 그것은 단지 <DataCollectionRunSettings> XML 요소를 주석 처리하고있었습니다 ... 그리고 갑자기 SQLCMD 프로세스가 다시 시작되었습니다!

구성 요소를 주석으로 처리하는 것이 트릭을 설명하는 이유가 무엇인지 모르겠지만, 요점은 통합 테스트 만 수행하고 "있는 그대로"실행하기 때문에이 솔루션은 저에게 좋습니다. <DataCollectionRunSettings> 요소를 주석하는 것은이 효과를 만드는 사람이 왜 설명 할 수있는 경우

어쨌든, 그것은 이해할 수있을 것이다.

고맙습니다.