2013-07-05 4 views
8

콘솔 애플리케이션 및 유닛 테스트가있는 솔루션이 있습니다.유닛 테스트 프로젝트의 상대 경로 C#

var target = new Validator(); 
var targetFile = @"C:\Folder\SubFolder\AnotherSubFolder\Development\DEV\src\UnitTest\TargetFolder\file.xml"; 

bool actual = target.Validate(targetFile); 
Assert.AreEqual(true, actual); 

Validator는 콘솔 응용 프로그램 프로젝트에 있으며 file.xml은 단위 테스트 프로젝트 내부의 폴더에 있습니다.

이 단위 테스트는 통과하지만,이 작업을 tfs 나 빌드 서버에 체크인 할 때 targetfile을 찾을 수 있는지 확인하고 싶습니다.

어떻게 대상 파일의 경로를 변경합니까?

미리 감사드립니다.

+0

어떤 단위 테스트 프레임 워크를 사용하고 있습니까? –

+0

프레임 워크? 그것은 4.0 – Gerald

답변

0

Validator의 위치는 관련이 없어야합니다. 상대 경로는 테스트 응용 프로그램이 실행되는 디렉토리에 상대적이어야하므로 targetFile을 상대 경로로 설정하십시오. 그런 다음 개발자 시스템에서와 마찬가지로 bulid 서버의 동일한 상대 위치에서 테스트를 실행해야합니다.

보너스 팁 : 아래처럼 폴더를 참조 할 수 있습니다 Assert.IsTrue(actual);

5

사용합니다. 내가 제대로 문제를 이해하면

"..\..\TargetFolder\file.xml" 
7

, (콘솔 응용 프로그램) 제품 코드가 테스트 프로젝트의 항목에 따라 달라 좋지 않다, 그래서 제품 코드 프로젝트에 file.xml를 이동할 수 좋습니다.

가 경로의 문제를 해결하기 위해, 나는 가장 좋은 방법은 복사로 출력 디렉토리 속성에 복사를 사용하는 것입니다 생각 항상 또는 복사 당신은 VS 등록 정보 창에서 찾을 수있는 새로운 경우.

다음 단계를 확인하십시오.

  1. 제품 프로젝트 (예 : 데이터 폴더)에 file.xml을 넣으려면 필요한 경우 폴더를 만드십시오.
  2. file.xml을 폴더에 넣습니다.
  3. file.xml에 대한 VS 속성 창으로 이동하십시오.
  4. 설정 빌드 작업 복사 로 출력 디렉토리에 복사 없음항상 또는 복사 새로운 경우.
  5. 구축 및이 경우

    Assert.IsTrue(File.Exists(@"Data\file.xml")); 
    

    같은 단위 테스트를 수행 VS 자동 테스트 poject 출력 폴더에 file.xml와 데이터 폴더를 만들 것이다.

+0

입니다. 이것은 현재 현재하고 있습니다. 그러나 대상 파일의 경로를 상대 경로로 변경하여 빌드 서버에 문제가 없는지 확인할 수있는 방법을 모르겠습니다. – Gerald

+1

중요한 것은 테스트 프로젝트에서 현재 위치를 파악하는 것입니다. 일반적으로 올바른 위치는 테스트 프로젝트의 출력 폴더 (bin \ debug)와 동일합니다. 테스트 프레임 워크에 따르면 출력 폴더는 쉐도우 복사본이라고하는 다른 곳에 복사 될 수 있습니다. 그러나이 경우에는 상대 경로가 손상되지 않으므로 아무런 문제가 없습니다. –

+0

그 진욱에게 감사드립니다! 매우 도움이됩니다. – Gerald

2

내 문제의 해결책을 발견했습니다.나는 이것을 사용 :

"..\..\..\TestFileFolder\myFile.xml" 
관련 문제