使用xUnit.net AutoRollback和Multi Threading

时间:2011-05-09 07:58:44

标签: .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属性,测试用例启动了一个事务,而在插入数据时,它会锁定表以便在结束时进行回滚。由测试用例生成的新线程无法从同一个表读取数据,因为它被父线程锁定。我可以在同一个线程中读取数据。

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

1 个答案:

答案 0 :(得分:1)

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

相关问题