.net - 使用xUnit.net AutoRollback和多线程

标签 .net multithreading nhibernate xunit.net xunit

我正在尝试使用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属性的缘故,测试用例启动了事务,而在插入数据时,它锁定了表以在最后进行回滚。测试用例产生的新线程无法从同一表中读取数据,因为它已被父线程锁定。我可以在同一线程中读取数据。

有人有解决办法吗?我想运行多个线程来读取上面插入的数据。

最佳答案

到目前为止,我发现您无法在使用AutoRollback功能时使用另一个线程与单元测试中的同一数据库进行交互。我最终从测试用例中删除了该属性,并跟踪了我自己在测试用例中插入的所有对象。

关于.net - 使用xUnit.net AutoRollback和多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5934100/

相关文章:

.net - .net SqlCommand.ExecuteReader 是否关闭连接?

c# - 我需要验证 GUID 的唯一性吗?

java - 等待主线程,直到 Java 中的多个线程之一发出信号

nhibernate - 为什么 NHibernate 延迟加载绑定(bind)到 session ?

.net - URLDownloadToCacheFile 失败,HRESULT '-2146697208'

c# - 将参数从 C# .cs 传递到 .xslt

c++ - 启用多线程 Eclipse C++

Java 定时器与静态方法

NHibernate - 为什么 Delete() 调用无法删除但通过 HQL 删除有效?

.net - NHibernate 和 Windsor 程序集冲突