Testng: Ajouter un moyen pour un tiers d'intercepter l'injection de paramètres de méthode

Créé le 22 sept. 2016  ·  3Commentaires  ·  Source: cbeust/testng

De https://github.com/jmockit/jmockit1/issues/337

Cela devrait fonctionner avec et sans fournisseur de données.

@rliesenfeld Des souhaits sur une future API fournie ?

@nitinverma est prêt à participer à l'intégration car il a déjà fait du bon travail sur l'injection de paramètres.

data-provider injection

Commentaire le plus utile

Je pense que le tout nouveau modèle d'extension JUnit 5 peut être une bonne source d'inspiration. La seule chose qui manque dans JUnit 5 est un moyen pour une bibliothèque tierce d'enregistrer automatiquement ces extensions, sans que les utilisateurs aient à ajouter manuellement des annotations "@ExtendWith" à leurs classes de test.

TestNG possède déjà un ensemble d'interfaces d'extension (IExecutionListener, par exemple, que JMockit implémente), mais aucune n'est similaire à l'interface ParameterResolver de JUnit. J'imagine que quelque chose comme ça pourrait être ajouté.

Tous les 3 commentaires

Je pense que le tout nouveau modèle d'extension JUnit 5 peut être une bonne source d'inspiration. La seule chose qui manque dans JUnit 5 est un moyen pour une bibliothèque tierce d'enregistrer automatiquement ces extensions, sans que les utilisateurs aient à ajouter manuellement des annotations "@ExtendWith" à leurs classes de test.

TestNG possède déjà un ensemble d'interfaces d'extension (IExecutionListener, par exemple, que JMockit implémente), mais aucune n'est similaire à l'interface ParameterResolver de JUnit. J'imagine que quelque chose comme ça pourrait être ajouté.

Je voudrais proposer que nous devrions penser non seulement à method argument injection mais à d'autres augmentations/extensions qui pourraient être possibles pour un framework de test.

Voici une idée préliminaire sur la prise en charge/l'exposition générique des intégrations :

  • Des intégrations de fonctionnalités peuvent être introduites.
  • Les intégrations de fonctionnalités peuvent être obsolètes.
  • Les intégrations de fonctionnalités peuvent être rétractées.
  • Les intégrations de fonctionnalités peuvent avoir des prérequis.
  • Les prérequis de l'intégration des fonctionnalités peuvent être des versions.
  • Les prérequis de l'intégration de fonctionnalités peuvent être d'autres intégrations.
  • Un produit peut exposer plusieurs intégrations de fonctionnalités.
  • L'intégration de produits ne dépend pas directement d'autres intégrations de produits, mais via des intégrations de fonctionnalités.
  • L'utilisateur doit avoir un accès facile à la liste des intégrations actives.

Métaphore:

TestNG est un vaisseau-mère et les autres produits sont des pods. Les pods s'ancrent dans le vaisseau-mère et offrent un tas de fonctionnalités. Les fonctionnalités sont couplées ou couplées en attente d'une autre fonctionnalité (via le même pod ou un autre) ou rejetées au fur et à mesure qu'elles sont rétractées. Une fois que les couplages sont en place, le vaisseau-mère peut s'engager ou se désengager pour effectuer un bon fonctionnement et une correction de cap.

Ci-dessus n'est qu'un aperçu approximatif qui, je l'espère, sera enrichi par la discussion.

J'aime la vision mais cela peut être fait par étapes et l'injection d'arguments de méthode est le candidat idéal pour la première étape.

Et actuellement, les auditeurs sont un bon moyen pour les extensions tierces.

Cette page vous a été utile?
0 / 5 - 0 notes