2010-12-14 4 views
1

파일을 만드는 단위 테스트를 작성하는 중입니다.MSTest : TestContext로 단위 테스트 작성

현재 나는 TestContextTestResultsDirectory을 사용하여 생성 된 파일 (어썰트 할 결과)을 저장합니다. TestResultsDirectory가 생성되지 않는 이유는 기본적으로

 //Create directory 
     Directory.CreateDirectory(TestContext.TestResultsDirectory); 

     //Create file. 
     File.Create(TestContext.TestResultsDirectory + @"\Test.txt"); 

내 질문 : 구문은 같다?

방금 ​​File.Create을 호출하면 DirectoryNotFoundException으로 테스트가 실패합니다.

TestContext을 사용하는 올바른 방법입니까? 아니면 과 같은 속성을 사용하여 런타임에서 "테스트 관련"경로를 만들 수 있도록 메서드 수준에서 설정할 수 있습니까?

+0

단위 테스트가 격리되어 실행되고 데이터베이스, 시스템 클럭 및 파일 시스템과 같은 외부 리소스와 통신하지 않기 때문에 기술적으로 '단위 테스트'가 생성되지 않습니다. – Steven

+0

개념적으로 네, 맞습니다. 이 테스트는 텍스트 파일을 업데이트하고 텍스트 파일이 올바른지 확인하는 것입니다.감사를 위해 "변경"이 파일에 저장되어 있는지 확인해야합니다. 테스트 컨텍스트는 런타임에 의해 생성되므로 테스트는 모든 개발자가 실행할 수 있습니다 (테스트 컨텍스트 선택의 열쇠). 테스트 컨텍스트에 존재하지 않는 디렉토리에 대한 포인터가있는 이유를 조금 혼란스럽게합니다. – msuhash

+0

생성 된 디렉토리는 어디에서 검색 했습니까? System.Console.WriteLine (Path.GetFullPath (Path.Combine (TestContext.TestResultsDirectory, "Test.txt")))))을 시도 했습니까? – k3b

답변

1

TestContext를 사용하지 않습니다. 이 경우 내가 대신있는 Environment.CurrentDirectory을 사용합니다 :

//Create directory 
    Directory.CreateDirectory(Path.Combine(Environment.CurrentDirectory, "SubDirectory")); 

    //Create file. 
    File.Create(Path.Combine(Environment.CurrentDirectory, "Test.txt")); 
+0

동일한 패턴 (현재 디렉토리)을 사용하고 루트 폴더에 폴더를 생성하는 테스트 사례는 오늘 청소 중입니다. Visual Studio 2010을 사용하고 있습니다. – vboctor

1

당신은 아마 대신 TestContext.ResultsDirectory를 사용하고 싶습니다. 이것은 실제로 생성 된 디렉토리를 가리키는 것으로 보인다.

TestContext.TestResultsDirectory (경로에 GUID 폴더가 있음) 만들어지지 않으므로 DirectoryNotFoundException이 표시됩니다.

2

나는 이것이 오래된 스레드라는 것을 알고 있지만, 지금은이 물건에 대해 배우고 있으며, Visual Studio 자동화 테스트를 수행하면서 TestResultsDirectory 폴더에 대한 질문에 대한 답을 얻지 못했습니다. 아마 다른 사람을 도울 것입니다.

TestResultsDirectory

은하지 시험 중에 생성입니다. (@ Kevin, 이름에 대한 GUID를 갖는 것은 폴더가 생성 될 수 있는지 여부와 관련이 없습니다.) 테스트가 실행되는 동안 파일 및 폴더 생성을 추적했고 폴더는 다음과 같습니다. 사용자 코드가에서 종료 된 후 까지 생성되지 않습니다.

생성 화면 비디오 캡처 테스트 (ScreenCapture.wmv) 또는 작업 로그 (UITestActionLog.html)를 실행, 그것은 코드가 완료 때까지하지
을 만든 후 파일 TestResultsDirectory 에 배치되어 발생합니다. 테스트에서 이러한 결과 파일이나 유사한 결과 파일을 만들지 않으면이 폴더가 생성되지 않을 가능성이 큽니다.

제가 말했듯이, 저는 여전히 Visual Studio 테스트에 대해 배우고 있습니다.

업데이트 : 비디오 또는 작업 로그를 녹화 할 때 테스트가 완료 될 때까지에 메모리가 인 것으로 나타났습니다. 이것이 사용자 코드가 종료 된 후에 출력 폴더가 생성되는 이유입니다.

이 주제에 대해 자세히 알아보면 (사이트에서 두 번 이상 답변을 수정할 수 있습니까?)이 대답을 업데이트 할 것입니다.

관련 문제