몇 가지 접근 방법을 사용할 수 있습니다. 하나는 파일을 임베디드 리소스로 배포하고 조명기/테스트 클래스 초기화 메소드에서 테스트 런타임에 파일을 추출하는 것입니다. 이 방법은 매우 신뢰할 만합니다 (즉, 테스트 어셈블리가 어디에서 실행되는지는 중요하지 않지만). 약간 더 복잡합니다 (파일을 포함 된 리소스로 표시해야하는 경우 파일 기반 어셈블리를 포함 할 때 사용되는 명명 규칙에 대해 알아야합니다. 기반 리소스를 어셈블리로 가져오고 Assembly.GetManifestResourceStream()을 숙지해야합니다.
"loose files"(즉, 포함되지 않음)를 사용할 수도 있습니다. 이 방법에서는 파일을 "Copy Always"또는 "Copy if Newer"로 표시하기 만하면 파일이 테스트 어셈블리의 빌드 출력 디렉토리에 복사됩니다. NUnit을 사용하고 있다면 거기에서 멈출 수 있습니다. 당신이 (비주얼 스튜디오와 함께 제공 무엇을) MSTEST를 사용하는 경우, 당신은 당신의 테스트 클래스 나 메소드에 [DeploymentItem] 속성을 추가해야합니다 : 위의 모두에서
[DeploymentItem("MyFile.xml"[, "someoptionalsubfolder"])]
public void MyTest()
{
...
}
, 나는 당신이하는 것이 좋습니다 리소스를 추적 할 수 있도록 폴더 구조/명명 규칙을 채택하십시오. 아래처럼 뭔가가 잘 작동했습니다. 그것은 ASP.NET MVC가 사용하는 폴더 구조와 꽤 잘 작동합니다. 이 접근법에서는 어셈블리 또는 테스트 클래스 수준에서 테스트 집합에 대해 일정한 "공유"리소스를 가질 수 있지만 각 테스트 집합 또는 각 테스트마다 자체 리소스 버전을 가질 수 있습니다 (예를 들면, 테스트 "잘못된 데이터"응답 또는 테스트 에지의 시나리오)을 위해 :이 방법을 따른다면 그런데
+-Resources
+-Shared
- SomeGlobalResource.xml
+-TestClass1
+-Shared
- MockData.xml
+-TestCase1
- SpecialVersionofMockData.xml
+-TestCase2
- MockDataMissingRequiredInformation.xml
+-TestCase3
- EtCetera.xml
+-...
+-TestClass2
+-Shared
+-TestCase1
+-TestCase2
+-...
+-TestClass3
...
, 이것은 크게는 MSTEST에서 DeploymentItem 속성을 사용하는 방법을 단순화합니다.대신 자신을 미치게 각각의 리소스 파일에 대한 속성을 유지, 당신은 단순히 클래스에서 하나의 지시어를 배치 할 수 있습니다 복사하는 전체 리소스 폴더 트리 :
[DeploymentItem("Resources\\", "Resources")]
[TestClass]
public class MyTestClass()
{
...
}
편집 : 나는 당신이 아직도 지적한다 테스트 내용에 대한 경로를 관리하는 데 필요합니다. NUnit이나 MSTest는 현재 실행중인 테스트를 기반으로 경로를 자동 생성하는 도구를 제공하지 않습니다. 즉, 테스트 코드를 복사하여 붙여 넣을 때 정확한 경로를 유지하는 것에 대해 경계해야합니다.
아마도 xml 파일을 사용하는 대신 xml 개체를 만들 수 있습니다. 그러나 더 자세한 정보가 없으면 접근 방법은 괜찮습니다. – WhileTrueSleep
_ "생성 된 콘텐츠에 대해 내 코드를 테스트하려고합니다."_ -이 콘텐츠 _ 테스트 할 수있는 메모리 표현. 파일을 읽는 대신 코드에서 다시 만들 수 있습니까? – CodeCaster
@CodeCaster이 콘텐츠를 생성하는 것은 내가 아닌 다른 응용 프로그램에서 만들어졌으며 직접 액세스 할 수 없습니다. 결과 만. – MemLeak