Remarque : seule la dernière version est prise en charge
6.11
L'écouteur est appelé pour chaque suite, si la suite parent contient des suites enfants, les suites parents doivent s'exécuter en premier avant d'exécuter la suite enfant.
Les suites enfants sont d'abord exécutées avant d'exécuter la suite parent.
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="ParentSuite" parallel="classes" thread-count="10">
<suite-files>
<suite-file path="child_suite.xml"/>
</suite-files>
<test verbose="1" name="SomeTest">
<classes>
<class name="com.example.SomeTest"/>
</classes>
</test>
</suite>
Actuellement, suite-files
est comme une importation, incluez <test>
partir de suites spécifiées et le résultat est une seule suite.
C'est pourquoi onStart
n'est appelé qu'une seule fois.
@juherr en fait, il est appelé deux fois (pour chaque fichier de suite). Le comportement a-t-il changé depuis la version 6.11 ?
Ok, deux appels est un problème.
@krmahadevan Quel est le comportement attendu de onStart
en cas de suite-files
?
@juherr - Je pense que c'est le bon comportement.
Dans le cadre de #1285 je pense que nous avons changé ce comportement
Je suis capable de reproduire le problème de commande mais, en fait, TestNG exécutait toujours des suites enfants avant la suite parent (https://github.com/cbeust/testng/blame/master/src/main/java/org/testng/TestNG .java#L1191-L1199) et les écouteurs n'étaient pas correctement ajoutés avant #1285.
6.13 aurait dû résoudre le problème de doublon avec #1533
@avarabyeu
Je peux modifier le comportement de la commande et exécuter la suite principale avant les suites enfants, mais la suite principale se terminera avant ses enfants.
Est-ce que ça ira pour vous ? Une meilleure prise en charge des enfants implique de grands changements que nous ne ferons probablement pas.
Pourriez-vous confirmer que la version 6.13 corrige le problème de duplication d'événements ?
@juherr Peut confirmer que 6.13 n'a pas de problème de duplication.
Je peux modifier le comportement de la commande et exécuter la suite principale avant les suites enfants, mais la suite principale se terminera avant ses enfants.
Oui, ce serait plus facile pour nous de gérer les événements dans ce cas. Merci!
@cbeust @krmahadevan WDYT si nous modifions l'exécution de la commande de suite/enfant ?
@avarabyeu - J'essaie juste de comprendre, en quoi l'ordre d'exécution est-il important ? Pourquoi est-ce problématique si les suites enfants s'exécutent en premier, puis la suite parent ?
@juherr - avons-nous vraiment besoin de changer cela ? Nous pouvons facilement régler cela au niveau du test lui-même en déplaçant le contenu de la suite principale dans une suite à part entière, puis en faisant fonctionner la suite principale comme une suite de suites non ? Juste essayer de comprendre ce que nous allons obtenir comme avantages ?
@krmahadevan Vous trouverez plus de détails sur https://github.com/reportportal/reportportal/issues/273
Le but est de trouver une solution courte au problème sans casser les choses.
Avec plus de temps, je préférerais avoir une bonne gestion des suites pour enfants, mais je ne pense pas que cela soit très important.
Si je comprends bien votre solution, vous proposez de fusionner tous les enfants <test>
dans le parent <suite>
, n'est-ce pas ?
@krmahadevan ReportPortal est un outil de reporting en temps réel des résultats de différents moteurs de test. Donc, fondamentalement, son client gère les événements déclenchés par l'écouteur testng et les envoie au serveur. L'ordre de ces événements est important car, basé sur eux, ReportPortal remplit des structures de données internes basées sur des arborescences - par exemple, il est impossible de créer un enfant avant le parent.
@juherr
Si j'ai bien compris votre solution, vous proposez de fusionner tous les enfants
dans le parent , à droite?
Non. Ce n'est pas ce que je voulais dire. Je dis essentiellement que le fichier xml de la suite parent
ne doit pas contenir d'entrées de balise <test>
mais ne contenir que des entrées <suite-file>
.
@avarabyeu - Merci d'avoir partagé un contexte supplémentaire. Je ne suis toujours pas en mesure de saisir l'idée derrière l'importance de l'ordre d'exécution, car TestNG déclenche des événements avant et après l'exécution de la suite. Ainsi, que les suites enfants s'exécutent ou que le parent s'exécute, les événements correspondants sont déclenchés, non ?
Non. Ce n'est pas ce que je voulais dire. Je dis essentiellement que le fichier xml de la suite parent ne devrait pas avoir de
les entrées de balises qu'il contient mais ne contiennent que entrées.
D'accord! Certes, c'est quelque chose que nous pouvons vérifier et mettre en garde contre.
Ainsi, que les suites enfants s'exécutent ou que le parent s'exécute, les événements correspondants sont déclenchés, non ?
Oui, mais nous construisons la même structure dans notre base de données interne - suite parent -> suite enfant. Donc, si la suite enfant démarre plus tôt que le parent, nous ne pouvons tout simplement pas la gérer côté serveur.
@avarabyeu - Que se passe-t-il donc si vous n'avez aucune balise <test>
dans votre fichier de suite maître, mais qu'il ne contient que des balises <suite-file>
? Cela ne vous conviendrait-il pas ?
J'essaie essentiellement de voir ce qui peut être fait pour vous aider à résoudre le problème sans aucun changement de code.
@krmahadevan en fait, c'est une bonne question. Le problème est venu de nos clients et je ne sais pas vraiment s'ils sont capables d'ajuster leurs fichiers testng.xml afin de résoudre ce problème d'intégration. Laissez-moi vérifier ce qui se passe si nous n'avons pas
Fermeture de ce sujet pour l'instant. @avarabyeu Veuillez commenter si vous avez une mise à jour sur la requête que j'ai soulevée afin que nous puissions trier davantage ce problème si nécessaire.
@krmahadevan @avarabyeu
J'ai essayé d'exécuter une suite de suite-file
s, sans aucune balise <test>
dans le fichier de la suite principale et le problème persiste.
(testé sur TestNG v6.14.3)
Quelques modifications ont été apportées à la dernière base de code dans TestNG en ce qui concerne
à la commande de suites, etc.,
Alors pouvez-vous s'il vous plaît essayer à nouveau en utilisant TestNG 7.0.0-SNAPSHOT et poster en arrière
vos résultats ?
Si le problème persiste, merci de nous aider à partager un échantillon qui peut
être utilisé pour reproduire le problème.
Le même problème s'est produit sur la version 7.0.0-SNAPSHOT
attacher un exemple de projet maven
testng-reportportal-example.zip
@ulmanA - L'échantillon que vous avez partagé ne dit pas grand-chose (du moins ce n'était pas explicite pour moi).
Vous avez essentiellement un fichier de suite appelé all-suites.xml
qui ressemble à ci-dessous
<suite name="All Suites" verbose="2">
<suite-files>
<suite-file path="suite1.xml"/>
<suite-file path="suite2.xml"/>
</suite-files>
</suite>
Et quand je lance ceci, je remarque que suite1
est exécuté en premier, puis suite2
, conduisant à all_suites
se complétant.
...
... TestNG 7.0.0-SNAPSHOT by Cédric Beust ([email protected])
...
Suite 1 -> TEST 1
Suite 1 -> TEST 2
===============================================
All Suites (0)
Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
===============================================
Suite 2 -> TEST 2
Suite 2 -> TEST 1
===============================================
All Suites (1)
Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
===============================================
===============================================
All Suites
Total tests run: 4, Passes: 4, Failures: 0, Skips: 0
===============================================
Alors, quelle est votre attente ici? Ce n'est pas clair.
all_suites
est visualisé comme un container of suites
donc ça va finir en dernier.
@avarabyeu
Répondre s'il vous plaît.
@krmahadevan Je ne suis pas le rapporteur du bogue mais je m'attendrais à l'ordre d'exécution suivant :
Alors oui, all_suites
devrait finir en dernier mais il devrait commencer en premier, car il contient toutes les autres suites ! Cependant, actuellement all_suites
ne se comporte pas comme un conteneur racine mais comme un conteneur de n'importe quel
Commentaire le plus utile
Le même problème s'est produit sur la version 7.0.0-SNAPSHOT
attacher un exemple de projet maven
testng-reportportal-example.zip