문제

ASP.NET 응용 프로그램에 대한 자동화 된 웹 테스트를 시도하고 있습니다. xunit.net 확장자의 Autorollback 속성을 사용하여 테스트 중에 이루어진 데이터베이스 변경 사항을 취소하기를 바랐습니다. Autorollback은 TransactionScope를 사용하여 테스트 전에 트랜잭션을 시작하고 나중에 다시 롤백합니다.

거래 중에 웹 애플리케이션을 누르려고 할 때는 항상 시간이 걸립니다. 이것이 효과가있는 것 같습니다. 아이디어가 있습니까? 내 테스트는 다음과 같습니다.

[Fact]
[AutoRollback]
public void Entity_should_be_in_list()
{
    Entity e = new Entity
    {
        Name = "Test",
    };
    dataContext.Entities.InsertOnSubmit(e);
    dataContext.SubmitChanges();

    selenium.Open("http://localhost/MyApp");
    Assert.True(selenium.IsTextPresent("Test"));
}
도움이 되었습니까?

해결책

ASP.NET 애플리케이션에는 별도의 데이터베이스 컨텍스트가 있으며 xunit.net이 시작한 트랜잭션에 가입하려는 것을 전혀 모릅니다. 분명히, 데이터베이스는 트랜잭션이 시작될 때 일부 리소스를 잠그는 것입니다. 웹 응용 프로그램은 한동안 참을성있게 기다렸다가 결국 포기합니다.

가장 좋은 방법은 빈 데이터베이스에서 시작하여 SQL 스크립트를 사용하여 스키마를 만들고 조회 테이블을 채우는 것입니다 (데이터베이스는 데이터베이스입니다. 소스 제어하에, 오른쪽?). 또 다른 방법은 테스트를 실행하기 전에 데이터베이스를 백업 한 다음 끝나면 복원하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top