NAnt를 통해 Gallio로 MbUnit 테스트에 대한 테스트 파일 경로를 설정하는 방법은 무엇입니까?
문제
모호한 제목을 용서해주십시오.한 줄로 설명하기 어렵습니다.
기본적으로 Visual Studio 내에서 TestDriven을 사용하여 잘 실행되지만 NAnt 내에서
실패는 파일 읽기를 시도하는 테스트와 관련이 있습니다.예를 들어 ".. \ .. \ files \ dir \ whatever"와 같이 현재 디렉토리에 상대적인 파일을 읽습니다.그러나 문제는 Gallio가 테스트 DLL을 다른 디렉터리에 복사하고 현재 디렉터리를 "% HOMEDIR % \ AppData \ Local \ Temp \ Gallio \ MSTestAdapter \ randomname \ TestDir \ Out \ something"으로 설정하는 것 같습니다.
제 질문은 두 가지입니다. 테스트에 필요한 파일을 런타임에 찾을 수 있도록 어디에 두어야하며 코드에서 어떻게 참조해야합니까?
(또한 우리가 MS-Test를 전혀 사용하지 않는다고 생각했는데 왜 거기에 'MSTest'디렉토리가 있습니까?)
해결책
MbUnit 대신 NUnit을 사용하지만 단위 테스트에서 파일 처리와 관련하여 몇 가지 일반적인 조언을 제공 할 수 있다고 생각합니다.
절대 경로 나 상대 경로에 의존하지 마십시오. 테스트 내부의 경로를 제어하십시오. 이것이 우리가하는 일입니다 :
- 테스트 프로젝트에
Resources
라는 폴더를 추가하여 모든 것을 한곳에 모을 수 있습니다. - 필요한 파일을 거기에 넣습니다 (예 :
MyFile.txt
) -
Add
>Existing Item...
를 통해 프로젝트에 파일을 추가하세요 (그러므로 파일은 소스와 함께 보관됩니다. 나중에 테스트 프로젝트 어셈블리의 일부로 배포됩니다) - 테스트 프로젝트의 리소스에 파일을 추가합니다 (프로젝트 속성의
Resources
탭,Add Resource
>Add Existing File...
) - 테스트 픽스처에서 파일 사용 :
- 픽스쳐 클래스에서 파일 경로 필드를 정의합니다 (유일한 경로가 있고 모든 머신에 대해 충분한 액세스 권한이있을 가능성이 높으므로
Path.GetTempFileName()
사용) - 테스트 설정 중에 파일 경로를 사용하여 로컬 파일 만들기
- 테스트에서 파일 사용
- 해체 중에 생성 된 파일 삭제
다음은 샘플입니다. 라코 디스
- 픽스쳐 클래스에서 파일 경로 필드를 정의합니다 (유일한 경로가 있고 모든 머신에 대해 충분한 액세스 권한이있을 가능성이 높으므로
제휴하지 않습니다 StackOverflow