如果我这样做的话:
public class AIntegrationTests
{
protected TransactionScope transaction = null;
[SetUp]
public void SetUp()
{
transaction = new TransactionScope(TransactionScopeOption.Required);
}
[TearDown]
public void TearDown()
{
transaction.Dispose();
}
}
[TestFixture]
public class UserRepositoryIntegrationTests : AIntegrationTests
{
private UserRepository _sut;
[SetUp]
public void SetUp()
{
_sut = new UserRepository();
}
//tests
}我知道这个错误:
network access for distributed transaction manager (msdtc) has been disabled
Please enable Network DTC access because of qlBulkCopy.WriteToServer(DataTable table)
for particular database当我从父类中删除事务实例化并将它放回子类时,我不会收到任何错误。
public class AIntegrationTests
{
protected TransactionScope transaction = null;
[SetUp]
public void SetUp()
{
}
[TearDown]
public void TearDown()
{
transaction.Dispose();
}
}
[TestFixture]
public class UserRepositoryIntegrationTests : AIntegrationTests
{
private UserRepository _sut;
[SetUp]
public void SetUp()
{
_sut = new UserRepository();
transaction = new TransactionScope(TransactionScopeOption.Required);
}
//tests
}为什么不允许我在父类中实例化事务。如果我把Dispose调用留在父程序中,它就能正常工作。
发布于 2014-08-21 16:21:01
派生类中的SetUp()正在基类中隐藏SetUp(),因此永远不会调用AIntegrationTests的SetUp()。
[TestFixture]
public class UserRepositoryIntegrationTests : AIntegrationTests
{
private UserRepository _sut;
[SetUp]
public void SetUp()
{
_sut = new UserRepository();
base.SetUp();
}
//tests
}由于您对两个类都有控制权,所以您应该在基类中创建SetUp() virtual并重写它.
public class AIntegrationTests
{
protected TransactionScope transaction = null;
[SetUp]
public virtual void SetUp()
{
transaction = new TransactionScope(TransactionScopeOption.Required);
}
[TearDown]
public void TearDown()
{
transaction.Dispose();
}
}
[TestFixture]
public class UserRepositoryIntegrationTests : AIntegrationTests
{
private UserRepository _sut;
[SetUp]
public override void SetUp()
{
_sut = new UserRepository();
base.SetUp();
}
//tests
}https://stackoverflow.com/questions/25430558
复制相似问题