MySQL 开始 transaction/rollback 在集成测试中不起作用

MySQL Start transaction/rollback doesn't work in integration test

我正在尝试使用 NUnit 为我的 Userclass 创建集成测试,我想做的是启动 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. 检查您的数据库是否支持事务。

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