Я пытаюсь написать тестовый пример, используя xUnit.net и атрибут AutoRollback, предоставляемый расширениями xunit.
Мой тестовый пример выглядит так
[Fact, AutoRollback]<br>
public void TestCase()<br>
{
// insert into data table
repository.Insert(data);
// spawn a new thread and read data which you just inserted in the data table
Task.Factory.StartNew(action_to_read_data);
}
Этот тестовый пример завершается неудачно и вызывает исключение тайм-аута соединения при чтении данных в новом потоке. Проблема, которую я обнаружил, заключается в том, что контрольный пример запускает транзакцию из-за атрибута AutoRollback и при вставке данных блокирует таблицу для отката в конце. Новый поток, созданный в тестовом примере, не может прочитать данные из той же таблицы, поскольку он заблокирован родительским потоком. Я могу читать данные в той же ветке, хотя.
У кого-нибудь есть решение? Я хочу запустить несколько потоков, читая данные, вставленные выше.