2010-01-29 24 views
26

Voglio testare le mie applicazioni RESTful direttamente via HTTP e sto cercando strumenti che possano aiutarmi con questo compito. Fondamentalmente sto cercando un semplice wrapper per le richieste HTTP che possono essere inviate ad es. Moduli HTML o risorse serializzate come JSON o XML.Modi per testare i servizi RESTful?

Sarebbe bello se ci fosse un modo per verificare se il servizio in realtà segue le linee guida architetturali REST (apolidia, URI, negoziazione del contenuto, ecc.).

Essere in grado di usarlo con JUnit sarebbe un vantaggio conveniente. Conosci qualche libreria che potrebbe aiutarmi con quello che voglio fare (e che è poco più di un semplice client http)?

+3

che non è proprio una "unità "prova più. Non penso che quella parola significhi più nulla. –

+1

Vero ... Stavo ancora pensando al modo unit test, l'ho cambiato. Sarebbe comunque bello avere un'integrazione Java per questo (in realtà i test unitari probabilmente finiranno in una grande seccatura con i mock di Request e Response e in qualche modo voglio evitarlo). – Daff

+2

Non dimenticare che il test dell'unità non impone quale è un'unità. Il servizio riposante IMHO può essere visto come un'unità se è sufficientemente isolato - ad es. testato da test di unità di livello più piccolo. –

risposta

13

Vedere se rest-client è di aiuto.

Modifica: Attualmente sto usando Postman - REST Client un plugin per google chrome ed è fantastico!

+1

tutte le estensioni basate su browser ti daranno dei problemi a testare la tua API perché non ti permetterà di creare un ambiente indipendente del browser di hosting, quindi non puoi cambiare la maggior parte delle intestazioni http per testare la tua compressione gzip ad esempio –

+0

-1 per Postman, nasconde il fatto che il server ha restituito 302 e ne ha fatto un altro dopo. – sinedsem

0

Forse il selenio può essere di qualche aiuto, ma sicuramente non del tutto.

+0

Perché non del tutto? –

+2

Il selenio, per quanto ne so, non ha un supporto diretto per JSON e XML, è utile per il test a livello di browser - test di interazione dell'utente e persino, non tutto funziona (AJAX). Anche una cosa che in particolare non mi piace del selenio (non fraintendermi mi piace usare il selenio in generale) è l'IDE Selenium, che dovrebbe aiutare, tuttavia crea solo più problemi generando un codice molto scadente (ad esempio, nessun JUnit4 supporto) e si comporta diversamente dal server (provare le variabili senza patch). –

10

Penso che il REST Assured ti soddisfi molto bene. È molto facile inviare richieste e analizzare le risposte XML e JSON. Per esempio. diciamo che una richiesta GET a "/ lotto" restituisce JSON:

{ 
"lotto":{ 
    "lottoId":5, 
    "winning-numbers":[2,45,34,23,7,5,3], 
    "winners":[{ 
    "winnerId":23, 
    "numbers":[2,45,34,23,3,5] 
    },{ 
    "winnerId":54, 
    "numbers":[52,3,12,11,18,22] 
    }] 
} 
} 

È possibile effettuare la richiesta e convalidare la risposta in questo modo:

expect().body("lotto.lottoId", equalTo(5)).when().get("/lotto"); 
1

Fiddler è uno strumento davvero utile, è possibile creare Richieste HTTP basate su XML con una varietà di verbi di richiesta come GET, POST, PUT, DELETE e così via.

http://www.fiddler2.com/fiddler2/

5

C'è anche il quadro Jersey Test (http://jersey.java.net/nonav/documentation/latest/user-guide.html#test-framework), ma come già detto Johan REST -assured framework raccomando anche questo framework - ha alcune caratteristiche interessanti come una sintassi simile a DSL, XPath e convalida dello schema, caricamento file semplice e utilizzo di Groovy Lambda Expressions per cercare strutture JSON restituite ..

Ho scritto due articoli ..

Problemi correlati