일부 테스트를 위해 리플렉션을 통해 ClassInitialize 메소드에서 생성 된 (리플렉션을 통해) 구성을 사용하여 데이터 기반 테스트를 실행해야합니다. 모든 것을 시도했지만 데이터 소스를 제대로 설정하지 못했습니다.MsTest, DataSourceAttribute - 런타임 생성 파일로 작업하는 방법?
테스트는 csv 파일 (클래스 당 한 줄)의 클래스 목록을 취한 다음 데이터베이스에 대한 매핑이 제대로 작동하는지 테스트합니다. 즉 모든 엔티티에 대해 데이터베이스에서 하나의 항목을 가져 오려고합니다. 테이블 구조가 일치하지 않을 때 예외를 throw합니다).
testmethod은 다음과 같습니다
[DataSource(
"Microsoft.VisualStudio.TestTools.DataSource.CSV",
"|DataDirectory|\\EntityMappingsTests.Types.csv",
"EntityMappingsTests.Types#csv",
DataAccessMethod.Sequential)
]
[TestMethod()]
public void TestMappings() {
분명히 파일이 EntityMappingsTests.Types.csv입니다. DataDirectory에 있어야합니다.
이제 Initialize 메서드 (ClassInitialize로 표시됨)에 함께 넣은 다음 쓰려고했습니다.
어디에 써야하나요? DataDirectory는 어디에 있습니까?
내가 시도 :File.WriteAllText(context.TestDeploymentDir + "\\EntityMappingsTests.Types.csv", types.ToString());
File.WriteAllText("EntityMappingsTests.Types.csv", types.ToString());
"단위 테스트 어댑터가 데이터 소스에 연결하거나 데이터를 읽지 못했습니다"의 두 결과. 더 정확한 :
오류 정보 : Microsoft Jet 데이터베이스 엔진은 객체 EntityMappingsTests.Types.csv '를 찾을 수 없습니다. 개체가 이고 이름과 경로 이름의 철자가 올바른지 확인하십시오.
그렇다면 파일을 어디에 넣어야합니까?
나는 또한 현재 디렉토리에 쓰고 DataDirectory 부분을 꺼내려고했습니다. 동일한 결과가 나타납니다. 슬프게도 제한된 디버깅 지원이 있습니다.
http://technet.microsoft.com/en-us/sysinternals/bb896645에서 ProcessMonitor 도구를 사용하십시오. MSTest.exe 또는 관련 qtagent32.exe에 필터를 설치하고 테스트로드 프로세스에서 어느 시점에서 어떤 위치에서로드하려고 시도하는지 확인하십시오. 그런 다음 여기에서 세부 정보에 대한 업데이트를 제공하십시오. – kroonwijk
당신이 asnwer로 게시 할 수 있도록 받아 들일 수 있습니다. 바보 같은 .... 당신의 충고가 효과가있어. – TomTom
물론 이죠. – kroonwijk