Question

Je suis face à ce que je pense est un problème commun, mais je ne l'ai pas trouvé beaucoup de discussions ou d'outils existants pour y remédier. Je suis en train de mettre en place un système de test d'intégration (ayant déjà une suite forte des tests unitaires) qui prend en charge les données d'entrée présentant l'assurance qualité et les résultats attendus (sous forme de fichiers plats, idéalement) qui peut être exécuté à partir d'une classe JUnit normalisée.

J'ai un plan pour rouler mon propre ici en utilisant l'annotation @Paramaterized JUnit. J'imagine chaque ensemble de données et des résultats ayant un fichier de contrôle, et tous les fichiers de commande étant placés dans un répertoire. La méthode de générateur de paramètres serait scanner ce répertoire et retourner une liste de ces fichiers. Le constructeur de test alors lire ce fichier et configurer les données d'entrée et les résultats attendus.

Avant de commencer à écrire, je voulais voir s'il y a des outils existaient déjà à faire ce genre de chose, sinon, obtenir des avis sur la solution que je propose.

L'application elle-même est un outil de type fin purement arrière ETL, qui prend les données à partir de plusieurs fichiers d'entrée dans différents formats et produit des résultats dans une base de données. J'ai déjà quelques tests d'intégration statiques qui utilisent un Derby dans la base de mémoire pour vérifier les résultats des données d'entrée triviales, et je prévois d'utiliser un système similaire pour confirmer les données ici. Résultats attendus seraient sous forme de triplets de (key_value, column, expected value). Je veux utiliser JUnit afin de lier dans le reste de nos tests et le résultat des infrastructures de rapports.

Était-ce utile?

La solution

Jetez un oeil à Spock, un cadre de tests sur Groovy avec un fort soutien pour les tests pilotés par les données. Spock est conçu pour tester le code Java (et Groovy), et est entièrement compatible avec JUnit (en fait, les tests sont exécutés avec Spock JUnit). Voir ici un simple test exemple qui tire des données d'une base de données.

En général, votre plan me semble raisonnable, et peut également être réalisé avec JUnit simple et @Parameterized. Spock et Groovy peuvent vous rendre la vie plus facile cependant. Par exemple, travailler avec des fichiers texte et bases de données est beaucoup plus facile Groovy que dans Java.

Disclaimer: Je suis le créateur de Spock

.

Autres conseils

Je préfère me Spock. Mais je vois qu'il ya un cadre JUnitParams là-bas qui est beaucoup plus lisible que les tests JUnit paramétrés droit:

https://github.com/Pragmatists/junitparams

Une grande description peut être trouvée à l'adresse:

https: // weblogs.java.net/blog/johnsmart/archive/2014/07/23/data-driven-unit-testing-java

Pour d'autres frapper cette question ....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top