7
votes

Tenir une valeur dans les tests unitaires

J'ai une question pour vous gars.J'ai 2 tests unitaires qui appellent desservices .La valeur que l'un des retours de test unitaire doit être utilisé pour une autre méthode de test d'unité

exemple xxx < / Pré>

Comment puis-je stocker une valeur en une seule et utiliser cette valeur dans une autre unit.


5 commentaires

C'est techniquement un test d'intégration, les tests d'unités ne doivent pas dépendre des influences externes (dans votre cas un service Web)


En règle générale, vous ne voulez pas qu'un seul test dépend d'un autre, car vous ne pouvez pas toujours faire confiance à la commande dans laquelle les tests sont exécutés, et cela vous empêche de pouvoir exécuter un test à la fois.


@Trevor Pilley Oui .. Mais même dans l'intégration teste comment nous pouvons utiliser une valeur renvoyée par une unitest dans une autre ...


@Mikerichards alors comment pouvons-nous gérer cette situation ... ?? des idées ??


Si vous traitez cela comme un test d'intégration où vous dépendez d'une chose dont la sortie est transmise à une autre, il suffit de fusionner les méthodes en une.


3 Réponses :


8
votes

En général, vous ne devriez pas écrire vos tests comme celui-ci. Vous ne pouvez pas vous assurer que vos tests s'exécutent dans un ordre particulier, il n'y a donc pas de bonne façon de le faire.

Au lieu de faire des tests indépendants, mais refacteur la partie commune de sa propre méthode (sans test) que vous pouvez appeler dans le cadre de votre autre test.


2 commentaires

C'est le meilleur itinéraire. Mieux vaut mieux injecter une interface de service qui renvoie des valeurs testables connues pour vos tests d'unités, puis testez le service de manière indépendante.


En termes d'essai d'intégration, c'est l'itinéraire que je prendrais aussi. Cela signifie que lorsque le premier échoue, échoue, mais bon, vous ne pouvez pas avoir tout. Une autre possibilité est d'avoir un jeton connu dont vous êtes sûr d'inclure la réaction correcte de votre système de test et de l'utiliser sur le deuxième test.



2
votes

Ne réutilisez pas de valeurs. L'ordre dans lequel les tests sont exécutés sont très souvent aléatoires (les coureurs les plus courants comme les tests d'exécution de Nunit et de Resharper dans un ordre aléatoire, certains pourraient même le faire en parallèle). Au lieu de cela, appelez simplement le service Web à nouveau (même si cela signifie avoir 2 appels de service Web) dans votre deuxième test et récupérer la valeur dont vous avez besoin.

Chaque test (que ce soit une unité ou une intégration) doit avoir toutes les données / dépendances disponibles pour qu'il s'exécute. Vous ne devez jamais s'appuyer sur d'autres tests pour configurer l'environnement / des données car ce n'est pas ce qu'ils sont écrits.

Pensez à vos tests dans isolation - chaque test est un être séparé, qui met en place, exécute et nettoie tout ce qui est nécessaire pour exercer un scénario particulier.


0 commentaires

2
votes

Voici un exemple en suivant les contours d'Oleki, de la manière dont vous pouvez organiser ce xxx


2 commentaires

A du sens !!! mais si chaque test a des données différentes à appeler !! Je suis dans cette situation.Test 1 Créez un processus, le test 2 supprime un processus


@ user1410658: Create-Supprimer est votre scénario de processus d'intégration alors - cela devrait être un test.