J'écris du code de test pour une fonctionnalité qui traite les fichiers PDF. L'idée de base derrière les tests est que je les pointe vers certains PDF que j'ai sélectionnés spécialement, ils les traitent et je vérifie que la sortie est ce que j'attends.
Ma question est: où dois-je stocker ces fichiers PDF de grande taille? Dois-je les archiver dans le contrôle de version avec le code? Ou les mettre ailleurs? De toute évidence, le code de test est inutile sans les PDF (ou même avec différents PDF) mais quand même, les mettre dans notre référentiel semble mal.
Votre système de contrôle de version doit contenir tout ce dont il a besoin pour construire, compiler, tester, et empaqueter une application pour la distribution (par exemple MSI, RPM). Je dirais également que les configurations de construction et d'autres scripts devraient également être en contrôle de version.
Je devrais être en mesure de vérifier un projet et d'avoir un environnement complet de compilation, de construction et de test.
Il existe deux approches pour archiver les données de test. Tout d'abord, vous pouvez archiver les données de test elles-mêmes (les PDF dans ce cas). Deuxièmement, vous pouvez archiver les données source qui peuvent être utilisées pour générer des données de test (le cas échéant). Cela pourrait être un script SQL chargé dans une base de données vierge contenant des données de test, ou peut-être un fichier texte qui peut être compilé dans un PDF ou autre fichier.
D'autres peuvent être en désaccord avec vérifier tout dans le contrôle de version, mais j'ai trouvé dans mon expérience professionnelle qu'il est essentiel de s'assurer qu'un environnement complet peut être reconstruit à partir de rayure.
Si les tests sont inutiles sans les fichiers d'installation que vous avez préparés, il est logique d'inclure les fichiers dans votre VCS avec le code de test.
Bien que les fichiers utilisés dans le test ne soient pas du code, vous pouvez les afficher comme une dépendance sur laquelle le code s'appuie. Il est donc utile de tout garder ensemble.
En contrepoint, certains VCS ne gèrent pas bien les gros fichiers binaires, et d'autres ont une forte opposition à l'inclusion de tout type de fichier binaire dans un VCS. Si l'un de ces cas s'applique à vous, le stockage des fichiers de test dans un emplacement bien connu et facilement accessible aurait également un sens.
J'envisagerais également de mettre un commentaire dans le code de test qui dit "repose sur foo.pdf
pour exécuter tous les tests. "
S'il s'agit de données statiques, alors oui, mettez-les en contrôle de version. Ces fichiers ne changeront pas vraiment une fois archivés; ils seront soit supprimés si cette fonctionnalité n'est plus nécessaire, soit de nouveaux fichiers de test seront ajoutés à côté. Quoi qu'il en soit, vous n'avez pas à vous soucier de la mauvaise place des diffs binaires.
Si vous générez des données de test, par exemple. au hasard, vous devez alors l'enregistrer automatiquement en cas d'échec d'un test, mais le supprimer autrement. Toutes les données enregistrées de cette façon devraient être transformées en tests de régression réguliers, afin que ces cas Edge soient définitivement testés à l'avenir plutôt que de compter sur la chance du tirage.
Incluez définitivement ces données avec vos tests et votre code d'application principal. Il est utile d'avoir une suite de tests vraiment bien organisée - donc si vous testez l'extraction de pdf (et que vous avez ce code bien encapsulé), vous devriez être en mesure de construire un chemin d'accès à vos données de test, basé sur le chemin d'accès au code de l'application - cela a toujours fonctionné pour moi.
Avec git, vous pouvez configurer un .gitignore pour empêcher toute sortie temporaire ou journalisation de test de polluer votre dépôt.