9
votes

Passer la sortie d'une méthode d'essai à une autre méthode Testng

Je dois écrire les cas de test de l'unité suivants en test:

  1. sauvegardeProductest qui retournerait productible si les détails du produit sont enregistrés avec succès dans DB.

  2. ModifyProductest, il doit utiliser le produit précédemment enregistré comme paramètre.

    Je prends les détails du produit (prdouctname, relaines) pour SaveProduCtTest et ModifyProductest Methode à partir d'un fichier XML à l'aide de fournisseurs de données Testng.Since ProductID est généré dans la méthode de sauvegarde, je dois le transmettre à la méthode de modification.

    Quelle est la meilleure façon de passer la sortie d'une méthode de test à une autre méthode en test.


1 commentaires

Généralement pour les tests d'unités, vous souhaitez vous moquer de tout ce qui ne fait pas partie du test de l'unité actuel.


3 Réponses :


3
votes

Chaque test d'unité doit être indépendant des autres tests afin que vous puissiez plus facilement voir ce qui échoue. Vous pouvez avoir une méthode d'assistance à enregistrer le produit et à renvoyer l'ID et à l'appeler des deux tests.


1 commentaires

Et si la manipulation de la transaction est effectuée au niveau du test, les affirmations devront être déplacées vers une méthode différente.



23
votes

Avec tout le respect de SIMENDJO, le fait que tous les tests soient indépendants les uns des autres est une approche dogmatique qui a beaucoup d'exceptions.

Retour à la question initiale: 1) Utilisez les méthodes dépendantes et 2) Le résultat intermédiaire dans un champ (Testg ne recrée pas vos instances à partir de zéro, de sorte que le champ conserve sa valeur). p>

par exemple p>

private int mResult;

@Test
public void f1() {
  mResult = ...
}

@Test(dependsOnMethods = "f1")
public void f2() {
  // use mResult
}


1 commentaires

Notez que si vous utilisez Eclipse avec le plug-in Testng, lors de l'exécution de votre méthode de test F2 "Seulement" (clic droit sur la méthode> Exécuter en tant que> test de test), Eclipse exécutera automatiquement la première F1 puis F2.



10
votes

avec le itestContext code> objet. C'est un objet disponible dans le monde entier dans le contexte Suite et Disponible via Paramètre dans chaque @Test.

Par exemple: P>

@Test 
public void test1(ITestContext context, Method method) throws Exception {
    // ...
    context.setAttribute(Constantes.LISTA_PEDIDOS, listPaisPedidos);
    // ...
}

@Test
public void test2(ITestContext context, Method method) throws Exception {
    List<PaisPedido> listPaisPedido = (List<PaisPedido>)
    context.getAttribute(Constantes.LISTA_PEDIDOS);
    // ...
}


1 commentaires

Qu'est-ce que c'est constantes? Si sa classe statique Comment vous allez mettre à jour le temps d'exécution? Peu déroute ... Pourriez-vous s'il vous plaît expliquer.