2009-03-27 5 views
3

현재 C : \ Projects \ TestProject \ TestClass.cs에 TestClass.cs라는 테스트 클래스가 있습니다.
또한 C : \ 프로젝트는 \ TestProject \ 설정 \ config.xml에.NET : VS 팀 테스트를 실행할 때 파일의 절대 경로 얻기

TestClass.cs에서

, 내가 지금처럼 파일 시스템에서 XML을로드 할 수있는 시험 방법이 : 불행하게도

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Path.Combine(Assembly.GetExecutingAssembly().Location, "config\config.xml"));

을 Location 속성이 나를 준다 값 :
C : \ Projects \ TestProject \ TestResults \ C입니다 klaw_

대신 내가 원하는 것을

\ [computernamehere] [여기 시간] :. \ 프로젝트 \

\ 내가 Assembly.GetExecutingAssembly() 코드베이스뿐만 아니라 유사한 결과를 시도했습니다 TestProject.

아이디어가 있으십니까?

답변

2

MSTest를 사용하는 경우이 파일을 DeploymentItemAttribute로 표시해야합니다. 즉, DLL로 복사됩니다.

+0

DeploymentItemAttribute를 추가하고 xml 파일의 경로로 전달하고 경로에 대해 걱정할 필요없이 직접 단위 테스트에로드했습니다. 그게 :) – Klaw

1

음, 사실을 말하고 있습니다. NUnit/TestDriven.NET 등과 달리 - MSTest는 각 테스트마다 다른 폴더로 물건을 복사합니다. 예를 들어 파일에 ([DeploymentItem])을 포함하도록 지정하거나 testrunconfig (속성 -> 배포 -> 파일 추가 ...)에 지정해야합니다.

"Copy to Output Directory"플래그를 사용할 수있는 TestDriven.NET과 대조하십시오.

2

테스트이므로 파일을 포함 된 리소스로 만드는 방법은 무엇입니까? 그러면 다음 코드를 사용하여 런타임에 포함 된 리소스를 읽을 수 있습니다.

Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource); 

리소스는 일반적으로 네임 스페이스 + 파일 이름입니다. 하지만 당신은 디버거에서 다음 코드를 실행하여이 문제를 해결할 수 :

AssemblyGetExecutingAssembly().GetManifestResourceNames(); 

는이 포함 된 리소스의 목록을 반환합니다.

1

[DeploymentItem]을 사용하여 항목을 표시하는 것 외에도 테스트 실행 구성에서 항목을 가져올 위치의 디렉터리와 함께 배포 사용이 선택되어 있는지 확인해야합니다.

관련 문제