MySQL启动事务/回滚在集成测试中不起作用

时间:2016-03-17 15:03:37

标签: c# mysql transactions nunit integration-testing

我正在尝试使用User为我的NUnit类创建集成测试,我想要的是启动transaction,更新我的MySQL测试数据库和而不是回滚。

这是我的代码,更新很好,但在我和我的数据库仍然更新。 在MySQL Workbench中调用我的查询可以正常工作。

[TestFixture]
    public class UtenteIntTest
    {
        private User user;
        bool result;

        [SetUp]
        public void Setup()
        {
            //Execute query "START TRANSACTION"
            result = false;
        }

        [Test] 
        public void ConstId_IdUser_User()
        {
            user = new User(1);

            if ((user.id == 1) && user.username == "test" && 
                user.name == "test" && user.active == 1 
                && user.mail == "test@test.test")
            {
                result = true;
            }

            Assert.That(result, Is.EqualTo(true));
        }

        [Test]
        public void Update_User_UpdatedUser()
        {
            user = new User(1)
            {
                username = "update",
                password = "update",
                name = "update",
                mail = "update@update.update",
                attivo = 0
            };
            user.Update();
            user = new User(1);

            if ((user.id == 1) && user.username == "update" &&
                user.nominativo == "update" && user.active == 0
                && user.mail == "update@update.update")
            {
                result = true;
            }

            Assert.That(result, Is.EqualTo(true));
        }

        [TearDown]
        public void Teardown()
        {
                //Execute query "ROLLBACK"
        }
    }

1 个答案:

答案 0 :(得分:3)

  1. 检查您的数据库是否支持交易。

  2. 您可以使用Transactionscope来测试交易。看到。 How do I test database-related code with NUnit?