70 votes

Existe-t-il un moyen d'exécuter MySQL en mémoire pour les cas de test JUnit ?

J'essaie simplement d'ajouter des cas de test pour les services accédant à une base de données MySQL, et j'aimerais recréer l'ensemble du schéma (et pour certains scénarios, utiliser également un fichier de vidage MySQL avec les données nécessaires pour chaque cas de test). Je cherchais autour de moi et j'ai trouvé des gars utilisant SQLite / H2 et d'autres pour le faire, mais je me demande s'il existe un moyen d'exécuter MySQL en mémoire, donc je n'ai pas à m'inquiéter de quoi que ce soit de spécifique à MySQL dialecte que je pourrais utiliser sur nos services.

4voto

dubdubdubdot Points 2046

3voto

Sean Patrick Floyd Points 109428

C'est l'une des raisons pour lesquelles l'utilisation d'extensions SQL propriétaires n'est généralement pas une bonne idée.

Ce que je ferais, c'est d'essayer d'identifier les endroits où vous utilisez du SQL non standard et de refactoriser votre code pour déplacer ces parties vers des services dédiés. Ensuite, vous pouvez vous en moquer lors de l'exécution de tests unitaires.

1voto

Nicolae Albu Points 999

Vous pouvez utiliser un schéma différent pour les tests JUnit. Si vous utilisez Spring, ses extensions JUnit permettent à chaque test de s'exécuter dans une transaction en lecture seule, de sorte qu'aucune donnée ne sera persistante dans la base de données après les tests. Si vous avez besoin de données initiales pour les tests, vous mettez les données nécessaires dans la @Before qui participe à la transaction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X