Pour diverses opérations de base de données CRUD
, les tests unitaires correspondants doivent être écrits. Il n'y a pas beaucoup de problèmes avec la recherche, mais il y aura des problèmes avec les ajouts, les suppressions et les modifications. Puisque le code s'exécute dans un environnement de production, il ne peut pas vraiment être modifié.
Maintenant, ce à quoi je pense, c'est que la solution consiste à créer une autre base de données pour les données de développement distincte de la base de données dans l'environnement de production, mais c'est un peu gênant. Veuillez me dire comment les tests unitaires du code qui doivent modifier la base de données sont généralement effectués dans le processus de développement réel de l'entreprise ?
J'ai brièvement regardé l'introduction mockito
, mais je n'ai pas semblé trouver de bonne solution. Quelqu'un peut-il donner des suggestions ou recommander des informations dans ce domaine ?
Remarque :
J'ai vu cette introduction aux tests unitaires dans la communauté IBM :
Les tests unitaires doivent être faciles à exécuter. L'exécution des tests unitaires ne doit pas nécessiter d'opérations lourdes telles que la configuration. Si le code du test unitaire inclut l'accès aux bases de données, aux réseaux, etc., le test n'est pas un véritable test unitaire.
Une façon de le dire单元测试是不允许连接真实的数据库的,所以一切数据库操作都要mock
, alors comment tester le code de la base de données ?
Les tests unitaires peuvent être effectués en utilisant h2. Généralement, le développement au niveau de l'entreprise a son propre environnement de test, et ce n'est pas un gros problème de tester directement la base de données
Ceci n'est pas un test unitaire, mais un test d'intégration
Vous ne devez pas utiliser de bases de données en mémoire telles que h2, car la syntaxe et les fonctionnalités de ces bases de données sont différentes de votre base de données de production, ce qui peut entraîner un échec des tests
Si vous utilisez Spring, veuillez vous référer au chapitre sur les tests d'intégration dans la documentation officielle de Spring
Utilisez une base de données en mémoire pour résoudre ce problème. Après avoir introduit la base de données en mémoire, vous devez gérer le script ddl et le script dml des données d'initialisation nécessaire dans le code
.Démarrez la base de données en mémoire chaque fois que vous exécutez un test unitaire, flashez les scripts ddl et dml, puis. exécutez la logique de test unitaire. Les outils de script de base de données de gestion recommandés incluent flyway et liquibase