Ein Problem, auf das ich bei meinen Integrationstests stoßen werde, ist, dass mehrere Tests auf dieselbe Datenbank zugreifen. Obwohl dies jetzt kein Problem ist, weiß ich, dass wir hier mehrere Anwendungen haben, die auf dieselbe Datenbank zugreifen, und ich versuche nur, einen Weg zu finden, um dieses Problem zu verhindern, bevor es auftritt.
Eine Idee, die ich oft gesehen habe, ist die Verwendung von Transaktionen. Beim Start starten Sie eine Transaktion und beim Herunterfahren setzen Sie die Transaktion zurück. Dies bedeutet, dass mehrere Tests auf dieselben Datenbanktabellen zugreifen und sich nicht gegenseitig beeinflussen, was großartig ist. Das Problem, das ich habe, ist, dass in meinem Fall 85-95% der Tabellen, mit denen ich in MySQL arbeite, MyISAM sind, die keine Transaktionen unterstützen.
Gibt es Möglichkeiten, um Speicher-Engines zu umgehen, die keine Transaktionen unterstützen, aber dennoch mehreren Tests den Zugriff auf dieselben Tabellen ermöglichen, ohne dass sie sich gegenseitig beeinflussen? Soweit ich gehört habe, verwendet das Ruby on Rails-Testframework Transaktionen auf diese Weise. Wie umgehen sie dieses Problem (oder tun sie es)?