Можно ли использовать откат TransactionScope с Selenium или Watin?

StackOverflow https://stackoverflow.com/questions/1004292

Вопрос

Я пытаюсь провести автоматическое веб-тестирование моего приложения ASP.NET. Я надеялся использовать атрибут AutoRollback из расширений Xunit.net для отмены любых изменений в базе данных, которые были сделаны во время теста. 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