Test unitaire en jeu!Application de cadre qui ne nécessite pas de serveur de jeu de test

StackOverflow https://stackoverflow.com/questions/6367690

  •  28-10-2019
  •  | 
  •  

Question

Une option pour exécuter mes tests dans mon Play! l'application se fait en exécutant la commande play auto-test.

Une des façons dont Play semble identifier les tests à exécuter est de trouver toutes les classes de test avec la super classe play.test.UnitTest (ou un autre équivalent de Play). Avoir une classe de test étendre UnitTest semble entraîner une surcharge, comme le montre ce petit truc craché dans la console:

INFO   info, Starting C:\projects\testapp\.
WARN   warn, Declaring modules in application.conf is deprecated. Use dependencies.yml instead (module.secure)
INFO   info, Module secure is available (C:\play-1.2.1\modules\secure)
INFO   info, Module spring is available (C:\projects\testapp\.\modules\spring-1.0.1)
WARN   warn, Actually play.tmp is set to null. Set it to play.tmp=none
WARN   warn, You're running Play! in DEV mode
INFO   info, Connected to jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
INFO   info, Application 'Test App' is now started !

De toute évidence, avoir un environnement Play pour les tests qui nécessitent une telle configuration est utile, cependant, si j'ai une classe de test qui teste le code de production qui exécute une logique qui ne nécessite pas d'environnement Play, je ne veux pas avoir à étendre UnitTest afin que je puisse éviter la surcharge de démarrage d'un environnement Play.

Si j'ai une classe de test qui n'étend pas UnitTest, elle n'est pas exécutée par la commande play auto-test. Existe-t-il un moyen d'obtenir la commande play auto-test pour exécuter tous les tests, que j'étende ou non le UnitTest de Play?

Modifier: Quelqu'un a en fait soulevé un ticket pour ce problème même

Était-ce utile?

La solution

la réponse courte: non.Une réponse un peu plus longue: non sauf si vous changez de code dans le framework.L'autotest est une tâche Ant qui définit le serveur et déclenche le test, mais n'utilise pas la tâche ant, donc il ne détectera pas (par défaut) vos tests unitaires «normaux».

Vous avez deux options: soit vous ajoutez une tâche supplémentaire au fichier Ant de Play pour exécuter des tests unitaires via la tâche (vous devrez également inclure les jars pertinents) soit vous éditez le code utilisé pour lancer l'environnement de test de Play.

Les deux impliquent de changer le cadre à un certain niveau.Bien que sachant que vous utilisez Play, je me demande pourquoi vous ne devriez pas avoir tous vos tests suivre le modèle Play ...

Autres conseils

Si ces tests ne nécessitent aucun jeu!fonctionnalité, pourquoi ne pas les mettre dans une bibliothèque?Avec votre exemple (math add): créez un package calculator.jar, et compilez-le avec Ant ou Maven après avoir exécuté des tests. Comme ça, vous pouvez utiliser votre bibliothèque dans plusieurs Play!projets (ou Spring, Struts, ... si vous le souhaitez.

Je ne comprends vraiment pas pourquoi le problème lui-même est même discutable.Avoir des tests unitaires simples et petits (même dans la partie Web de votre projet) est la chose la plus normale à faire. La surcharge supplémentaire de l'initialisation du framework ralentit considérablement vos allers-retours si vous avez de nombreux tests.Comme on peut le voir dans le ticket, la solution de contournement actuelle consiste à faire étendre vos tests unitaires org.junit.Assert au lieu de play.test.UnitTest

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top