2009-06-23 10 views
3

J'ai beaucoup de tests unitaires qui nécessitent beaucoup de fichiers txt, data, html etc. Le stockage externe de ces fichiers rend la vie beaucoup plus facile de mettre à jour les cas de test en ajoutant de nouveaux cas de test etc.Comment utiliser les données externes dans les tests unitaires?

Cependant, avoir des dépendances dans les tests unitaires apporte beaucoup de maux de tête dans différents systèmes et dans différents coureurs de test.

Quelles sont les meilleures pratiques?

  1. Extérieurement les stocker et liant relativement à ces fichiers le code? (causant des problèmes dans certains coureurs de test, ou requiert une configuration supplémentaire)
  2. Intégrer tous ces fichiers dans le test dll et lus à partir de l'unité il (permet de créer des tests plus difficiles)
  3. Stockage dans un hardcoded emplacement (causant évidemment tant de problèmes lorsque vous consultez le code dans un endroit différent)

Comment résolvez-vous ce problème?

+0

Veuillez numéroter les options. Les balles sont confuses. Quels problèmes rencontrez-vous dans vos testeurs et de quelle configuration "supplémentaire" parlez-vous? Pourquoi l'option 1 est-elle si mauvaise? Pouvez-vous fournir des problèmes spécifiques? –

+0

Il ne fonctionne pas parfois avec nUnit, je ne peux pas isoler la version ou la configuration. Mais le principal problème est lorsque le "répertoire de travail" change parfois il ne peut plus trouver les fichiers relatifs. –

Répondre

3

-je utiliser un dossier local dans mon projet de test et obtenir les fichiers de test avec le code comme:

public static FileInfo GetTestFileInfo(string fileName) 
{ 
    var dir = AppDomain.CurrentDomain.BaseDirectory; 
    return new FileInfo(dir + @"\..\..\TestData\" + fileName); 
} 

Oh oui, je l'utilise MbUnit.

+0

AFAIK MBUnit prend en charge les options du répertoire de travail. Je pense que nUnit fait quelque chose de gênant bien que je viens de remarquer que si je le laisse avec "TestData \ xxx.txt" cela fonctionne. Au moins pour l'instant. J'essayais d'obtenir le répertoire courant. –

0

Ma pratique consistait à intégrer des ressources de test dans des ensembles de tests unitaires et à les retirer en utilisant GetManifestResourceStream.

Le test NUnit est de toute façon orienté vers les appareils, donc une fois que vous avez installé l'appareil (, c'est-à-dire), il est facile d'ajouter des tests supplémentaires.

Questions connexes