Um problema que acho que vou encontrar nos meus testes de integração é ter vários testes acessando o mesmo banco de dados. Embora isso não seja um problema agora, eu sei que temos vários aplicativos aqui que acessam o mesmo banco de dados e só estou tentando pensar em uma maneira de evitar esse problema antes que ele aconteça.
Uma ideia que tenho visto muito é usar transações. Na inicialização, você inicia uma transação e, na desmontagem, reverte a transação. Isso significa que vários testes acessam as mesmas tabelas do banco de dados e não afetam um ao outro, o que é ótimo. O problema que tenho é que, no meu caso, 85-95% das tabelas com as quais estou trabalhando no MySQL são MyISAM, que não suportam transações.
Existem maneiras de contornar os mecanismos de armazenamento que não suportam transações, mas ainda permitem que vários testes acessem as mesmas tabelas sem que afetem um ao outro? Pelo que ouvi dizer, a estrutura de teste do ruby on rails usa transações dessa maneira, como eles resolvem esse problema (ou eles)?