我正在尝试使用 xUnit.net 和 xunit 扩展提供的 AutoRollback 属性编写测试用例。
我的测试用例是这样的
[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 属性而启动了一个事务,并且在插入数据时它会在最后锁定表以进行回滚。测试用例产生的新线程无法从同一个表中读取数据,因为它被父线程锁定。我可以在同一个线程中读取数据。
有人有解决方案吗?我想运行多个线程来读取上面插入的数据。