NAnt를 통해 Gallio로 MbUnit 테스트에 대한 테스트 파일 경로를 설정하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/4889319

문제

모호한 제목을 용서해주십시오.한 줄로 설명하기 어렵습니다.

기본적으로 Visual Studio 내에서 TestDriven을 사용하여 잘 실행되지만 NAnt 내에서 작업을 통해 테스트를 실행하려고하면 실패하는 MbUnit 테스트가 있습니다.

실패는 파일 읽기를 시도하는 테스트와 관련이 있습니다.예를 들어 ".. \ .. \ files \ dir \ whatever"와 같이 현재 디렉토리에 상대적인 파일을 읽습니다.그러나 문제는 Gallio가 테스트 DLL을 다른 디렉터리에 복사하고 현재 디렉터리를 "% HOMEDIR % \ AppData \ Local \ Temp \ Gallio \ MSTestAdapter \ randomname \ TestDir \ Out \ something"으로 설정하는 것 같습니다.

제 질문은 두 가지입니다. 테스트에 필요한 파일을 런타임에 찾을 수 있도록 어디에 두어야하며 코드에서 어떻게 참조해야합니까?

(또한 우리가 MS-Test를 전혀 사용하지 않는다고 생각했는데 왜 거기에 'MSTest'디렉토리가 있습니까?)

도움이 되었습니까?

해결책

MbUnit 대신 NUnit을 사용하지만 단위 테스트에서 파일 처리와 관련하여 몇 가지 일반적인 조언을 제공 할 수 있다고 생각합니다.

절대 경로 나 상대 경로에 의존하지 마십시오. 테스트 내부의 경로를 제어하십시오. 이것이 우리가하는 일입니다 :

  1. 테스트 프로젝트에 Resources라는 폴더를 추가하여 모든 것을 한곳에 모을 수 있습니다.
  2. 필요한 파일을 거기에 넣습니다 (예 : MyFile.txt)
  3. Add> Existing Item...를 통해 프로젝트에 파일을 추가하세요 (그러므로 파일은 소스와 함께 보관됩니다. 나중에 테스트 프로젝트 어셈블리의 일부로 배포됩니다)
  4. 테스트 프로젝트의 리소스에 파일을 추가합니다 (프로젝트 속성의 Resources 탭, Add Resource> Add Existing File...)
  5. 테스트 픽스처에서 파일 사용 :
    1. 픽스쳐 클래스에서 파일 경로 필드를 정의합니다 (유일한 경로가 있고 모든 머신에 대해 충분한 액세스 권한이있을 가능성이 높으므로 Path.GetTempFileName() 사용)
    2. 테스트 설정 중에 파일 경로를 사용하여 로컬 파일 만들기
    3. 테스트에서 파일 사용
    4. 해체 중에 생성 된 파일 삭제

      다음은 샘플입니다. 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top