2016-09-07 3 views
1

실행중인 Specflow 테스트 세트가 있는데 각 시나리오 완료 후 파일에 결과를 쓰려고합니다. 전체 시운전이 끝나면 다시 기록하십시오. 테스트를 디버그 모드로 실행하면 각 시나리오가 끝난 후이 코드가 실행되지만 모든 테스트가 끝나면 파일이 Windows 탐색기에만 표시됩니다 (또는 테스트가 강제로 중지됩니다). 파일에 쓰는 아래 코드는 Specflow 테스트 프로젝트에 대한 별도의 프로젝트에 있습니다.응용 프로그램이 끝날 때까지 C# 파일이 쓰여지지 않습니다.

나는 원래 홍조와 StreamWriter를 대신이 있었다되지 않은 :

using (var file = new FileInfo(filePath).AppendText()) 

을하지만 내가 추가 세척, 닫기, 다음 프로세스를 추가 인터넷에서 다양한 예제를보고 난 후에, 작동하지 않는. 시작, StreamWriter로 변경되었으며 아무도 도움이되지 않았습니다. 여전히 작동하지 않는 현재의 코드입니다 : 나는 마침내 완료하고 파일 속성의 생성, 수정 및 액세스 한 날짜 때 출력 파일 만 3 선이 노력하고있어 예에서

private string rootFolderPath = Directory.GetParent(@"..\..\..\..") [email protected]"\"; 
    public void WriteAllTestScenarioNames(List<ScenarioResult> results, string fileName, string directoryName) 
    { 
     results.Sort(); 
     Directory.CreateDirectory(rootFolderPath + directoryName); 
     string filePath = rootFolderPath + directoryName + @"\" + fileName; 
     using (var file = new System.IO.StreamWriter(filePath)) 
     { 
      file.WriteLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString()); 
      foreach (var scenarioResult in results) 
      { 
       file.WriteLine(scenarioResult.ToString()); 
      } 
      file.Flush();//flush the file to ensure that it's written now 
      file.Close();//flush the file to ensure that it's written now 
     } 
     Process.Start(filePath); //flush the file to ensure that it's written now 
    } 

Windows 탐색기의 경우 동일합니다.

내가 윈도우 7 엔터프라이즈 SP1을 사용하고 .NET 프레임 워크 64 비트 4.5.2 파일이 작성되고있는 것으로 보인다

+0

아마도 내가 언급 한 것을 잊어 버렸습니다. 파일을 쓰는 클래스는 Specflow 테스트 프로젝트와 다른 프로젝트/어셈블리에 있습니다. – Steve

답변

0

이 문제는 Windows 탐색기에 표시되지 않은 것입니다. Explorer에서 확인한 디버그 모드에서 다시 밟았습니다. 파일이 없습니다. 변수 값에서 파일 경로를 복사하고 메모장 ++에서 정확한 경로를 열었습니다. 파일이있었습니다. 그런 다음 각 테스트 시나리오가 완료된 후 파일이 탐색기에 표시되고 업데이트됩니다.

편집 : 문제가

private string rootFolderPath = Directory.GetParent(@"..\..\..\..") [email protected]"\"; 

는 테스트 실행 후 사용했던 각 시나리오 후 다른 결과를 반환이었다 것으로 보인다. 하나는 내 사용자 폴더 (올바른)의 루트에 있었고 다른 하나는 Specflow 프로젝트 폴더 위에있었습니다. 첫 번째 폴더에서는 끝에서만 출력되지만 두 번째 폴더에서는 모든 시나리오 이후에 업데이트됩니다.

0

이 시도 : 파일 경로가 제대로 당신이 그 지역에서 쓸 수있는 권한이 있는지 여부를 형성하게 될 경우

public void WriteAllTestScenarioNames(List<ScenarioResult> results, string fileName, string directoryName) 
{ 
    results.Sort(); 
    Directory.CreateDirectory(rootFolderPath + directoryName); 
    string filePath = rootFolderPath + directoryName + @"\" + fileName; 
    FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write); 
    using (System.IO.StreamWriter file = new System.IO.StreamWriter(fs)) 
    { 
     file.WriteLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString()); 
     foreach (var scenarioResult in results) 
     { 
      file.WriteLine(scenarioResult.ToString()); 
     } 
    } 
    fs.Close(); 

} 

이 또한 확인 - 내가 제대로 형성하기되지 않을 수 있습니다 생각한다.

+0

폴더에 쓸 수있는 권한이 있습니다. 테스트 도중 끝에 동일한 파일 이름과 폴더가 사용됩니다. 문제가 Windows 탐색기에서 파일을 표시하지 않는 것 같았지만 정확한 파일 경로를 사용하여 메모장에서 열 수있었습니다. 이제는 테스트를 실행할 때 더 이상 문제가되지 않는 것 같습니다. 이유는 확실하지 않습니다. – Steve

관련 문제