답변:
이를 수행하는 표준 방법 은 파일에 배포 항목 을 지정하는 것입니다.이 항목은 Visual Studio 테스트 메뉴 또는 솔루션 항목 폴더의 테스트 실행 구성 편집 항목을 .testrunconfig
통해 액세스 할 수 있습니다 .
아래와 같이 배포 속성을 지정할 수 있습니다. 또한 "Content"및 "Copy if newer"속성을 설정해야합니다 (나중 설정에 대한 문서는 없지만 작동하도록 설정했습니다.
[TestMethod]
[DeploymentItem("mytestdata.xml")]
public void UploadTest()
{
}
속성이 작동 Test -> Edit Test Settings -> Local -> Deployment
하려면 아래에서 "배포 활성화"를 켜야했습니다 [DeploymentItem]
.
필요에 따라 세 가지 대답이 모두 정확합니다.
.testrunconfig (VS2010의 .testsettings)에 배포 할 파일을 추가하면 관련되지 않은 테스트가 격리되어 실행되는 경우에도 모든 파일이 모든 테스트 출력 폴더에 복사됩니다. 하나의 테스트를 실행하면 .testssettings의 배포 섹션에 나열된 모든 테스트 데이터 파일이 테스트 출력 폴더에 복사됩니다.
내 테스트에서 실제 테스트 출력 XML과 비교하기 위해 예상 XML 파일을 테스트 출력 폴더에 복사해야합니다. DeploymentItem 특성을 사용하여 실행중인 테스트와 관련된 XML 파일 만 복사합니다. VS2010에서는 .testsettings 파일에서 배포를 활성화하고 (경로를 추가하지 않음) DeploymentItem에서 TestProject와 관련된 XML 파일 경로를 참조해야했습니다.
도움이 되었기를 바랍니다.
다음은 testsettings 파일을 사용하지 않고 여러 솔루션에 포함 된 테스트 프로젝트에 대해 VS2012에서 작동합니다.
1) 배포하려는 파일과 폴더를 테스트 프로젝트 디렉토리의 폴더에 정렬합니다.
2) 프로젝트 속성에서 빌드 후 단계를 만듭니다.
xcopy /Y /S /i "$(ProjectDir)<Project_Folder_Name>\*" "$(TargetDir)<Deployment_Folder_Name>"
$(ProjectDir)
그리고 $(TargetDir)
VS에 의해 해석 될 매크로이며 그 자체로 포함되어야합니다.
<Project_Folder_Name>
1 단계에서 만든 폴더의 이름입니다.
<Deployment_Folder_Name>
테스트 파일이 배포 될 폴더의 이름이며 여러 테스트 프로젝트가 동일한 디렉터리에 배포 될 때 고유하도록 이름을 지정해야합니다 (예 : <Project_Name>_TestInputs
.
공유 위치의 테스트 파일도 테스트 상호 작용을 제한하기 위해 대상 디렉터리 배포 폴더에 복사해야합니다. $(ProjectDir)
매크로에 상대적인 소스 경로를 제공하십시오 . 예를 들면 "$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"
.
3) 추가 [DeploymentItem(source, destination)]
배포 파일 (모범 사례)을 사용하는 각 테스트 방법 또는 테스트 클래스 (게 으르거나 서두르는 경우 더 쉬운 방법 속성을 하고 이전에 사용 된 상대 경로 또는 테스트 설정 파일을 프로젝트를 업데이트하는 가장 쉬운 방법 ).
시험 방법에 source
의해 생성 된 바와 같이 대상 디렉토리 시험 방법에 대하여 사용되는 파일이나 디렉토리의 경로 xcopy
와 destination
이 배치 디렉토리에 대해 생성 될 디렉토리 경로된다. 따라서 테스트는 대상 디렉터리 또는 배포 디렉터리에서 일관되게 실행됩니다. 대상 경로는 파일 참조가없는 소스 경로와 동일해야합니다. 예 : [DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]
. 는 DeploymentItem
해당 파일이나 디렉토리를 사용하는 모든 방법에 포함되어야한다.
클래스에서 source
및 destination
모두 대상 디렉토리에 생성 된 폴더의 이름입니다 xcopy
. 이렇게하면 클래스의 테스트가 실행될 때 전체 폴더가 배포 디렉터리에 복사됩니다. 예:[DeploymentItem("Example_TestInputs","Example_TestInputs")]
4) 테스트 방법에서 이제 Visual Studio가 그날 저장하기로 결정한 위치에 관계없이 작업 디렉터리에있을 것이라는 확신을 가지고 파일 및 디렉터리에 액세스 할 수 있습니다 (예 : File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")
.
Visual Studio 내에서 빌드 후 이벤트 명령 줄을 사용해보세요 (해당 IDE를 사용하는 경우).
허용되는 답변은 정확하며 대부분의 다른 답변도 그렇습니다. 그러나 수년에 걸쳐 DeploymentAttribtue 및 Copy to Output을 사용하는 Visual Studio 단위 테스트의 배포 시스템이 데이터 파일이 많은 경우 을 . 파일을 원래 위치에 보관하는 것이 더 효과적이라는 것을 알았습니다.
내 다른 답변에 대한 자세한 내용은 여기에 있습니다. https://stackoverflow.com/a/53004985/2989655
도움이 되었기를 바랍니다.