J'ai un test httpclient pour mon application de démarrage à ressort. J'ai une classe qui jette une exception si la demande d'une post sur le serveur est dans une chaîne 2048 octets ou plus.
@Test public void testSize() throws ClientProtocolException, IOException { Random r = new Random(123); long start = System.currentTimeMillis(); String s = ""; for (int i = 0; i < 65536; i++) s += r.nextInt(2); String result = Request.Post(mockAddress) .connectTimeout(2000) .socketTimeout(2000) .bodyString(s, ContentType.TEXT_PLAIN) .execute().returnContent().asString(); }
4 Réponses :
Vous pouvez entourer la partie défaillante avec un try / capture et une échec de l'appel () à la fin du bloc d'essai. Si une exception est lancée, l'instruction FAIL () ne doit pas être atteinte et votre test doit passer. P>
Je préfère cette méthode que vous pouvez ensuite vérifier l'exception lui-même pour vous assurer qu'il contient des messages d'échec à laquelle vous vous attendez peut-être.
@Test code> a un argument pour affirmer qu'une exception particulière est lancée, vous pouvez écrire votre test comme E.g:
Il y a 3 façons que vous puissiez atteindre cela:
1) Utilisez @Test (attendu = .... code>) Annotation où vous fournissez une classe d'exception que vous souhaitez vérifier. P >
@Test
public void test() {
try {
// your test logic
fail(); // if we get to that point it means that exception was not thrown, therefore test should fail.
} catch (IOException e) {
// if we get here, test is successfull and code seems to be ok.
}
}
Il existe une autre solution, non déjà présentée dans ces réponses et est ma préférence personnelle. assertThatTrothrownby strong> dans votre cas p> * Disclaimer, ci-dessus Code écrit directement dans SO Editeur P> P>
Avez-vous une exception?
@Test code> a un argument pour affirmer qu'une exception a été lancée, E.g
@Test (attendu = ioexception.class) code>.
Oui c'est censé donner une exception avec le message d'erreur. Cela a fonctionné, merci. S'il vous plaît écrivez cela comme une réponse afin que je puisse accepter et vous donner des points.