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.
Réponses
Trop de publicités?Vérifiez ceci : http://mysql-je.sourceforge.net/
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.
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.