는 다음 테스트 클래스 고려해이 시험 그들이에게 힘 패스를 실행하지만, 순서에 따라단위 테스트에서 오래된 DeploymentItem을 제거하는 방법은 무엇입니까?
[TestClass]
public class ExampleTests
{
[TestMethod]
public void FileDoesNotExists()
{
Assert.IsFalse(System.IO.File.Exists("testfile.txt"));
}
[TestMethod]
[DeploymentItem("testfile.txt")]
public void FileExists()
{
Assert.IsTrue(System.IO.File.Exists("testfile.txt"));
}
}
을 그들이 현실 세계를 정의되어 있는지가 순서대로 실행된다는 보장이 없기 때문에 행동 비 결정적입니다 ... 분명히 나쁘다.
나는 TestCleanupAttribute를 둘러 보았지만 두 가지 테스트를 통과시키는 신뢰할만한 방법을 찾을 수 없었지만 이렇게하기 쉬운 방법이 있어야하는 것처럼 보였다. 그런 방법이 존재합니까?
업데이트 : 테스트 프레임 워크에서는 DeploymentItem이 배포되면 변경되지 않으므로 각 항목을 한 번만 배포하기 때문에 불가능한 것처럼 보입니다. 단기간에 필자는 테스트 할 코드를 더 이상이 동작이 필요하지 않게 변경했습니다. 장기적으로는이 가정을하지 않는 특성을 구현할 가능성이 큽니다.
필자가 테스트하려고 시도했던 동작은 (필수이지만 꼭 필요한 것은 아니지만) 구성 파일이 누락 된 경우의 동작 이었지만이 동작은 동일한 항목의 서로 다른 버전을 여러 테스트에 배포해야하는 경우에도 문제가됩니다 . 샌드 박스 디렉토리는 각 테스트에서 필요한 보일러 플레이트 코드의 양을 증가시키기 때문에 실행 가능하지만 이상적이지는 않습니다. – Yaur
나는 이러한 반복 파일 액세스 코드를 정적 함수가있는 정적 클래스로 언로드합니다. 나는 mstest buth로이 문제를 해결할 방법을 찾지 못했습니다. xUnit.net은 흥미로운 인터페이스를 가지고있는 것 같습니다. 즉 IUseFixture에서 클래스에 대한 DeploymentFixture 자신을 정의하고 각 테스트 전에 적절한 메소드를 실행합니다. –