Bonjour, j'ai écrit un étui à essai de juint pour l'API de repos avec httpurirequest. Le boîtier de test donne le résultat approprié, mais le problème est que je dois exécuter le serveur Tomcat pour tester le cas de test Junit. Pourquoi ??
Voici mon code: P>
package com.dataguise.webservices; import static org.junit.jupiter.api.Assertions.*; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.junit.jupiter.api.Test; import java.io.IOException; import com.dataguise.webservices.beans.DgException; class RestAPIsTest { final String versionNumber = "v1"; final String baseUrl = "http://localhost:10181/dgcontroller/services/restAPIs/"; final String sessionId = "2"; @Test public void idpsTest() throws ClientProtocolException, IOException { HttpUriRequest request = new HttpGet(baseUrl + versionNumber + "/idps"); request.addHeader("sessionId", sessionId); HttpResponse httpResponse = HttpClientBuilder.create().build().execute(request); System.out.println(">>>>>>>>>>>>>>>." + httpResponse.getStatusLine().getStatusCode()); assertEquals(200, httpResponse.getStatusLine().getStatusCode()); // Getting Json From Http Response String json = EntityUtils.toString(httpResponse.getEntity()); System.out.println(">>>>>>>>>>>>>>>." + json); } }
3 Réponses :
Je pense que vous avez mal compris la signification des "tests d'unité". Si vous faites une demande HTTP à un serveur exécutant, vous testez l'ensemble du serveur et non seulement une unité distincte. P>
Si vous souhaitez tester la logique à l'intérieur de votre contrôleur, créez simplement l'objet du contrôleur manuellement et appelez la méthode correspondante. P>
Le serveur est nécessaire car vous effectuez des tests contre les URL. P>
La seule façon de le faire est de se moquer du serveur. Il existe de nombreuses bibliothèques moqueuses différentes pour Java, comme Mockito ou EasyMock, mais ils vous permettent tous de fournir de fausses réponses du serveur. P>
Dans le cas de test que vous avez collé, il n'a pas de sens d'effectuer de tels tests, car vous semblez vérifier que le serveur réel répond et ne fait rien avec la réponse. La moqueur du serveur est très utile pour tester les clients API, mais vous ne semblez pas tester cela. P>
Vous avez deux options ici: p>
pouvez-vous s'il vous plaît me fournir du code que je peux se moquer du serveur
Si vous souhaitez tester vos points d'extrémité API, Spring fournit diverses annotations et différentes manières dans lesquelles vous pouvez tester votre application. Comme:
@springboottest code> avec @Autoconfiguremockmvc code> pour configurer le contexte de l'application sans démarrer le serveur pour tester votre application à la fin de votre application. LI >
- Une autre approche lorsque vous ne souhaitez pas tester toute l'application, mais il suffit de tester le calque Web consiste à utiliser l'annotation
@webmvctest code>. Dans ce cas, vous devez vous moquer de la couche de service et de tout autre haricot qui pourrait être nécessaire pour obtenir le résultat souhaité. LI>
ol> Vous pouvez utiliser l'annotation @springboottest code> pour indiquer le printemps qu'il doit démarrer le serveur et avoir le contexte de l'application configuré pour exécuter votre test. P>
Le @springboottest code> Annotation indique le démarrage à la recherche d'une principale
Classe de configuration (une avec @springbooPlication code>, par exemple)
et utiliser cela pour lancer un contexte d'application de ressort. P>
blockQquote> Dans ce cas, vous n'aurez pas à démarrer votre serveur manuellement Spring prendra soin de tout et une fois que les tests sont effectués, il arrêtera le serveur aussi. Je n'ai pas essayé de compiler ou d'exécuter le code mais utiliser comme: p> xxx pré> Ceci devrait fonctionner aussi longtemps que vous avez la dépendance suivante dans votre pom.xml code>: p> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
En fait, je n'utilise pas la chaussure de printemps
Excuses. Quel cadre et quelle version utilisez-vous alors?