C # NUnit TestCaseSource Passing Parameter
J'ai la méthode suivante qui génère un ensemble de cas de test!
public IEnumerable<ResultsOfCallMyMethod> PrepareTestCases(param1)
{
foreach (string entry in entries)
{
yield return callMyMethod(param1);
}
}
Comment puis-je passer des param qui est de type string en paramètre à ma PrepareTestCases()
méthode?
Est-il un moyen de faire ce qui suit:
[Test, Category("Integration"), TestCaseSource("PrepareTestCases", param1)]
public void TestRun(ResultsOfCallMyMethod testData)
{
//do something!
}
source d'informationauteur sparkr
Vous devez vous connecter pour publier un commentaire.
Si vous regardez TestCaseSourceAttribute doc vous verrez il n'y a pas de toute façon de passer le paramètre de la méthode qui retourne des cas de test.
De la méthode, qui génère des cas de test, devrait être sans paramètre.
Donc, en supposant que vous allez éviter la duplication de code et vous avez besoin de réutiliser la même méthode pour générer un peu de cas de test listes, je vous recommande de faire ce qui suit:
Écrire paramétrée méthode qui génère des cas de test de jeux:
(
PrepareTestCases()
déjà fait)Écrire sans paramètre wrappers qui appellent des cas de test de générateur et de passer le paramètre de votre choix:
Écrire des méthodes d'essai et passer paremeterless wrappers il y a tant de cas de test sources:
J'ai fait une modification pour ce dans la dernière version de nunit qui est sur le point d'être libéré (3.2).
https://github.com/nunit/nunit/blob/4f54fd7e86f659682e7a538dfe5abee0c33aa8b4/CHANGES.txt
Il est maintenant possible de faire quelque chose comme ceci
Dans mon cas, je voudrais charger des données depuis un fichier CSV, mais je ne pouvais pas laisser passer le nom du fichier à la "source de données".
Après avoir lutté un peu autour de moi, je viens à ce à deux cent solution.
Au premier abord, j'ai hérité de TestCaseSourceAttirbute
puis j'ai créé la couche de données, dans mon cas, un CSV reader.
Puis j'ai créé une classe avec la seule étendue pour contenir des propriétés avec les chemins d'accès aux fichiers. Il y a un nom de convention sur les biens, c'est ClassTypeName + "nom de fichier".
À ce point tout à décorer en conséquence le test, avec le type de classe de la carte de données et la classe qui contient le chemin du fichier.
J'espère que cela peut aider un peu.