2017-12-06 28 views
2

data.xml 파일이 있습니다. 예를 들어 File.Open(data.xml)을 사용하여 내 exectuable 옆에서 시작하려면이 응용 프로그램과 관련된 상대적으로 열고 싶습니다. 이 파일을 Visual Studio (2017) 프로젝트에 기존 리소스로 추가하고 빌드시 출력 디렉터리에 복사되도록 구성했습니다. 이 작동합니다.NUnit으로 테스트 할 때 데이터 파일을 어떻게 처리해야합니까?

제 문제는 내 솔루션에 내 프로젝트를 참조하면서 NUnit 테스트가 포함 된 두 번째 프로젝트가 있다는 것입니다. 테스트를 실행하기 전에이 빌드를 수행하면 이 아닌 복사본 data.xml이 테스트 바이너리 디렉터리에 저장되며 파일을 열 수 없으므로 테스트가 실패합니다.

단위 테스트를 수행 할 때 외부 파일을 어떻게 처리해야합니까? 절대 경로를 사용하지 않는 편이 낫습니다.

+2

테스트 프로젝트에 파일을 [링크 된 파일]로 포함 할 수 있습니다 (https://blogs.msdn.microsoft.com/jjameson/2009/04/02/linked-files-in-visual- 스튜디오 솔루션 /)? – stuartd

+0

파일을 포함 된 리소스로 만들 수 있습니다. – lloyd

답변

0

데이터 파일이 테스트뿐만 아니라 앱에서 사용된다고 가정합니다. VS는 앱을 테스트 출력 디렉토리에 복사 할 때 본 것처럼 이미 복사하지 않습니다. 여기 몇 가지 방법이 있습니다

...

  1. 테스트 출력 디렉터리에 응용 프로그램의 출력 디렉토리에서 파일을 복사하는 테스트 프로젝트에 빌드 후 단계를 추가합니다. 이것은 효과가 있지만 유지하기가 지저분합니다. 나는 그것을 추천하지 않는다.

  2. 리소스를 앱에 포함시키고 외부 파일보다는 리소스를 사용하도록 변경하십시오. 단점은 데이터에 액세스하는 방법에 따라 앱에서 여러 변경이 필요할 수 있다는 것입니다. 파일을 변경하면 파일을 다시 컴파일하지 않고 즉시 응용 프로그램의 동작을 변경한다는 의도가있는 경우 전혀 작동하지 않습니다.

  3. 하나 또는 두 개의 앱을 공통 출력 디렉토리로 변경하십시오. 이렇게하면 데이터가 변경 될 때마다 복사되어 모든 테스트에서 사용할 수있게됩니다. 그게 내가 일반적으로 상황을 처리하는 방법입니다.