나는 VS 2008과 함께 C# .NET에서 합리적으로 간단한 XML serializer/deserializer (로그 파일 파서) 응용 프로그램을 구현하고 있습니다. 코드의 다양한 부분에 대해 약 50 개의 단위 테스트가 있습니다 (대부분 다양한 직렬화 연산), 일부는 파일 I/O를 처리 할 때 주로 무작위로 실패하는 것으로 보입니다.VS2008 : 단위 테스트에서 임의로 파일 생성이 실패합니까?
테스트 구성 방법은 테스트 설치 방법에서 특정 미리 지정된 위치에 빈 파일을 새로 만들고 스트림을 닫는 것입니다. 그런 다음 파일에 대한 몇 가지 기본 테스트를 수행합니다 (정확히 테스트중인 내용에 따라 다릅니다). 정리 메소드에서 파일을 다시 h 제합니다.
내 단위 테스트에서 많은 부분 (대개 30 개 이상 실행되지만 실행 횟수가 달라짐)이 initialize 메소드에서 실패합니다. 생성하려는 파일에 액세스 할 수 없다고 주장합니다. 정확한 원인을 파악할 수는 없습니다. 한 번의 작동을 테스트하는 테스트가 실패하기 때문에 정확한 원인을 파악할 수는 없습니다. 그들은 모두 개별적으로 실행할 때 성공합니다.
여기에 문제가 있습니까? 여러 유닛 테스트에서이 파일에 액세스 할 수없는 이유는 무엇입니까?
[TestInitialize()]
public void LogFileTestInitialize()
{
this.testFolder =
System.Environment.GetFolderPath(
System.Environment.SpecialFolder.LocalApplicationData
);
this.testPath = this.testFolder + "\\empty.lfp";
System.IO.File.Create(this.testPath).Close();
}
[TestMethod()]
public void LogFileConstructorTest()
{
string filePath = this.testPath;
LogFile target = new LogFile(filePath);
Assert.AreNotEqual(null, target);
Assert.AreEqual(this.testPath, target.filePath);
Assert.AreEqual("empty.lfp", target.fileName);
Assert.AreEqual(this.testFolder + "\\empty.lfp.lfpdat", target.metaPath);
}
[TestCleanup()]
public void LogFileTestCleanup()
{
System.IO.File.Delete(this.testPath);
}
그리고 LogFile()
생성자 :
public LogFile(String filePath)
{
this.entries = new List<Entry>();
this.filePath = filePath;
this.metaPath = filePath + ".lfpdat";
this.fileName = filePath.Substring(filePath.LastIndexOf("\\") + 1);
}
정확한 오류 메시지
초기화 방법 시간의 일부 실패 단위 테스트
관련 방법 LogFileParserTester.LogFileTest.LogFileTestInitialize 예외가 발생했습니다. 가 다른 프로세스에서 사용하고 있기 때문에 '의 AppData \ 로컬 \의 empty.lfp \ < 사용자 > \ \ 사용자 C' System.IO.IOException : System.IO.IOException 과정 파일 에 액세스 할 수 없습니다 ..
당신이 말해 - VS2008 테스트를 동시에 실행합니까? 나는 그것에 대해 생각했지만 Google은 VS2010만이 여러 동시 테스트를 지원함을 나타 냈습니다. – Tim