Comment tester un Maillot de services web REST?
J'ai écrit un service Web Restful et d'avoir à le tester à l'aide de JUnit4. J'ai déjà écrit un Client à l'aide de Jersey Client. Mais j'aimerais savoir si je peux tester mon service uniquement avec junit4. Quelqu'un peut m'aider avec un exemple de la au moins.
Mon service rest a méthode d'authentification qui prend le nom d'utilisateur, mot de passe et retourne un jeton.
J'ai écrit d'essai pour la méthode d'authentification. Mais je ne suis pas sûr de la façon de test à l'aide de l'url.
public class TestAuthenticate {
Service service = new Service();
String username = "user";
String password = "password";
String token;
@Test(expected = Exception.class)
public final void testAuthenticateInputs() {
password = "pass";
service.authenticate(username, password);
}
@Test(expected = Exception.class)
public final void testAuthenticateException(){
username = null;
String token = service.authenticate(username, password);
assertNotNull(token);
}
@Test
public final void testAuthenticateResult() {
String token = service.authenticate(username, password);
assertNotNull(token);
}
}
Si vous voulez tester à l'aide de l'URL, alors vous aurez besoin pour démarrer un serveur de test. Vous pouvez utiliser un serveur embarqué, ce qui est assez commun pour les tests. Ou vous pouvez faire usage de Maillot Framework de Test, qui permettra de démarrer un conteneur embarqué pour vous. Ce Maillot version utilisez-vous?
Vérifier cette [question][1] il explique comment se moquer de votre service web. [1]: stackoverflow.com/questions/31189159/...
Vérifier cette [question][1] il explique comment se moquer de votre service web. [1]: stackoverflow.com/questions/31189159/...
OriginalL'auteur Jenny | 2015-03-31
Vous devez vous connecter pour publier un commentaire.
Si vous voulez tester à l'aide de l'URL, alors vous aurez besoin pour démarrer un serveur de test. Vous pouvez démarrer explicitement un serveur embarqué, ce qui est assez commun pour les tests. Quelque chose comme
C'est essentiellement un test d'intégration. Vous êtes à la Grizzly conteneur et le chargement d'une
ResourceConfig
le serveur avec uniquement leService
classe. Bien sûr, vous pourriez ajouter des classes à la configuration. Vous pouvez utiliser les "vrais" des ressources de la configuration, si vous le souhaitez.Le test ci-dessus utilise cette dépendance
Une autre option, qui est celle que je préfère, est de faire usage de la Maillot Framework De Test, qui va démarrer un conteneur embarqué pour vous. Un test pourrait ressembler à quelque chose de plus comme
À l'aide de cette dépendance
Et intégré Grizzly conteneur va commencer sous le capot, avec votre
ResourceConfig
de configuration. Dans les deux exemples ci-dessus, il est supposé que le@Path
de la valeur pour l'Service
classe estservice
, comme vous pouvez le voir dans le test d'Url.Certaines Ressources
Quelques Exemples
Mise à JOUR
Si vous n'êtes pas à l'aide de Maven, voici les pots que vous aurez besoin pour exécuter un embedded Grizzly conteneur pour le Maillot de Test Fraemwork
J'ai l'habitude de rechercher tous mes pots ici. Vous pouvez sélectionner la version et il devrait y avoir un lien dans la page suivante, pour le téléchargement. Vous pouvez utiliser la barre de recherche pour rechercher les autres.
Voici un simple exemple, une fois que vous avez tous les pots
Vous êtes probablement ne va pas avoir les ressources et
ResourceConfig
dans la même classe que le test, mais je veux juste garder les choses simples et visibles que dans une seule classe.Si vous utilisez un web.xml ou un
ResourceConfig
sous-classe (comme illustré ci-dessus), vous pouvez couper ce que vous test en utilisant un autreResourceConfig
, construit dans la classe de test, comme je l'ai fait. Sinon, si vous utilisez votre normalResourceConfig
de classe, vous pouvez simplement le remplacer dans leconfigure
méthode.La
configure
méthode, c'est la construction d'un web.xml fichier, juste dans du code Java. Vous pouvez voir les différentes méthodes dans leWebAppDescriptor.Builder
, commeinitParam
, qui est la même que pour un<init-param>
dans votre site web xml. Vous pouvez simplement utiliser la chaîne de caractères dans les arguments, mais il y a certaines constantes, que j'ai utilisé ci-dessus.La
@Test
est vous l'habitude de test JUnit qui va l'exécuter. C'est à l'aide de la Jersey Client. Mais au lieu de créer de laClient
, vous pouvez simplement utiliser le préconfiguréClient
par le simple accès à laresource()
méthode, qui renvoie unWebResource
. Si vous êtes familier avec le Maillot du Client, puis cette classe ne devrait pas être nouveau pour vous.Pouvez-vous expliquer ce "test à l'aide de l'url" signifie? J'étais sous l'hypothèse que vous souhaitez faire une demande à l'URL. Vous ne pouvez pas faire cela sans un conteneur de course à qui sera l'hôte de la Maillot de l'application. Sauf si vous voulez dire quelque chose d'autre.
Oui. Je dois faire une demande de ws. Mon ws est en cours d'exécution dans tomcat.
Donc, Maintenant, je comprends que de frapper de services web Rest, nous devons utiliser JerseyTest cadre ou rassurez-cadre avec Junit(non req) et nous ne pouvons pas le faire seul avec junit. S'il vous plaît corrigez-moi Si je me trompe.
De la même manière que vous exécutez votre Maillot application sur un serveur Tomcat, vous pouvez exécuter le Maillot application à partir de vos tests, en l'exécutant sur un serveur embarqué qui a commencé lors de votre test démarre et s'arrête quand il est terminé le test. C'est ce que j'ai fait dans le premier exemple, et c'est ce Maillot framework de Test fait pour vous sous le capot. Ceci est fait avec JUnit. Une fois que tous les tests sont effectués, le serveur s'arrête
OriginalL'auteur Paul Samsotha
Prendre un coup d'oeil à L'alchimie reste générateur client. Cela peut générer un proxy de mise en œuvre de votre JAX-RS classe de service web à l'aide de jersey client derrière la scène. Effectivement, vous vous appeler un webservice méthodes simples méthodes de java à partir de vos tests unitaires. Gère l'authentification http.
Il n'y a pas de génération de code si vous devez tout simplement d'exécuter des tests de sorte qu'il est commode.
La démo ici l'installation grizzly et utilise le générateur ci-dessus pour exécuter des tests junit.
Avertissement: je suis l'auteur de cette bibliothèque.
OriginalL'auteur Ashish Shinde
Je pense que @peeskillet vous a donné les prérequis de la compilation, j'.e vous avez besoin pour exécuter votre site web-le service d'un serveur web intégré. Vous pouvez également regarder dans dropwizard ou printemps-prise en charge du démarrage pour ce faire commodément.
Que pour, en fait, la vérification de la réponse j'aimerais faire simple et aller avec JUnit & http-rapprochement (voir https://github.com/valid4j/http-matchers)
OriginalL'auteur keyoxy