2017-07-13 1 views
0

J'ai des chaînes de la liste avec quelques urls:requête GET sur rassurez-vous - JAVA

  • localhost:80/my/first/url,
  • localhost:80/my/second/url

il peut y avoir 2, 5 urls ou plus. Je dois vérifier que adres me répondre avec l'erreur 500.

@Test() //bad test 
public void checkErrorStatusForURLs() { 
    for(String url : urlList()) { 
     given().when().get(url) 
       .then().statusCode(CoreMatchers.not(500)); 
    } 
} 

Je ne veux pas des tests d'écriture pour chaque URL. Puis-je le faire sur un test? Comment le faire correctement?

+0

double possible de [unité Java test pour les données d'entrée différentes] (https://stackoverflow.com/questions/10028188/java-unit-test-for-di fferent-input-data) – Berger

Répondre

0

Jetez un oeil à des tests paramétrés de Junit 4 comme décrit ici: https://github.com/junit-team/junit4/wiki/parameterized-tests

Quelque chose le long des lignes de cela peut travailler pour vous:

@RunWith(Parameterized.class) 
public class FibonacciTest { 

@Parameters 
public static Iterable<? extends Object> urls() { 
    return Arrays.asList("localhost:80/my/first/url", "localhost:80/my/second/url"); 
} 

@Parameter 
public /* NOT private */ String url; 

@Test 
public void checkErrorStatusForURLs() { 
     given().when().get(url) 
       .then().statusCode(CoreMatchers.not(500)); 
... 
} 
} 
+0

cela fonctionne sur 4.12 version junit, merci beaucoup! :) – Tom

0

Vous pouvez extraire statusCode et vérifiez quel état Evere vous voulez comme ceci:

for(String url : urlList()) { 
    int statusCode = given().when().get(url).then().extract().statusCode(); 
    if(500 == statusCode) { 
     //add it to a list?? 
    } 
}