Pergunta

Eu estou tentando fazer alguns testes web automatizado da minha aplicação ASP.NET. Eu estava esperando para usar o atributo AutoRollback de extensões xUnit.net para desfazer as alterações de banco de dados que foram feitas durante o teste. AutoRollback usa TransactionScope para iniciar uma transação antes do teste e enrolá-lo de volta depois.

Quando eu tentar acertar minha aplicação web durante uma transação, ele sempre tempo limite. Parece que isso deve funcionar, todas as idéias? Aqui está o meu teste:

[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"));
}
Foi útil?

Solução

O aplicativo ASP.NET tem um contexto banco de dados separado e não tem idéia de que você quer que ele se juntar a transação iniciada por Xunit.net. Aparentemente, o banco de dados bloqueia alguns recursos quando a transação começa; aplicação web espera pacientemente por algum tempo e finalmente desiste.

Eu acho que sua melhor aposta é começar a partir do banco de dados vazio e script SQL uso para criar esquema e preencher lookup tabelas (seu banco de dados é sob controle de origem , certo?). Outra abordagem é a base de dados de backup antes de executar os testes e depois restaurá-lo uma vez que terminar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top