2009-06-09 9 views
14

Sto cercando di trovare un pratico framework di test dell'unità per JSF.Test unità JSF

Conosco JSFUnit, ma per me è molto poco pratico. Devo includere circa 10 JAR nel mio progetto e saltare attraverso molti altri cerchi solo per farlo funzionare.

Mi rendo conto che, a causa della necessità di simulare una piattaforma e un client, l'unità di test delle applicazioni Web è difficile. Ma c'è un modo migliore?

+1

Quali framework stai usando con JSF o stai usando JSF raw? – Drew

+0

Sto utilizzando RichFaces per la funzionalità AJAX e facelets per il mio rendering. Inoltre, sto usando JSF RI 1.2 per la mia implementazione. Per il mio server app, sto usando glassfish v2. –

+1

Alcuni rispondenti menzionano il selenio. Si noti che il selenio non è uno strumento di test unitario. È per l'integrazione testare un'applicazione assemblata e distribuita. Test unitario significa testare singole parti del codice emerse dall'ambiente. – pcjuzer

risposta

9

Hai mai pensato di eseguire test di integrazione con Selenium o un altro strumento? Il selenio consente di registrare ed eseguire test direttamente nel browser. Puoi anche eseguire test in più browser e su più piattaforme con Selenium Remote Control.

I test delle unità di scrittura sono buoni, ma potrebbe fornire di più per la creazione di alcuni test di integrazione funzionale piuttosto che per il test di unità del codice del livello di presentazione.

+0

Questa sembra un'alternativa molto interessante. Lo esaminerò ulteriormente. –

3

Sul progetto al quale sto lavorando nel momento in cui ci siamo dilettati con l'uso del selenio. In realtà abbiamo dedicato molto tempo alla stesura di questi test sul selenio, ma abbiamo scoperto che hanno aggiunto poco valore perché l'interfaccia utente cambia così tanto e si finisce per raddoppiare gli sforzi per ottenere un ritorno sull'investimento molto limitato.

Un altro problema con il selenio è che richiede l'implementazione del codice, il che significa che non funziona bene con framework di test unitari, ad esempio Maven.

Quello che direi è che scrivere test di unità veramente buoni per i bean gestiti è inestimabile.

+0

è possibile utilizzare il selenio con Maven come test di integrazione – IAdapter

2

Avete dato un'occhiata al compito Ant jsfunitwar o in alternativa il plugin Maven fornito da JSFUnit? Entrambi riducono notevolmente la complessità della generazione del file .war da testare. Sto usando JSFUnit sul mio progetto attuale e trovo la combinazione di funzionalità di test della scatola bianca e della scatola nera per essere molto potente. Poiché JSFUnit utilizza HtmlUnit sotto le copertine, puoi esaminare molto facilmente ed efficacemente l'HTML generato o, al contrario, verificare lo stato dei bean di back-up JSF interni. Sono stato in grado di incorporare i test JSFUnit nel mio processo di integrazione continua e sono stato piuttosto soddisfatto del risultato.


1

Il selenio è superficiali, jsfunit è verso l'interno. Raccomando di usare jsfunit se il progetto non è semplice. Poiché il membro del team può cambiare i nomi jsf managedbean o ecc, puoi prenderlo con jsfunit.

0

Sono con Paul su Selenium che è molto facile da configurare e iniziare a lavorare con. Uso Selenium IDE in Firefox con alcune personalizzazioni a quel livello, quindi è possibile esportarle su altre piattaforme come i test Java JUnit. È stato abbastanza semplice scaricare e avviare selenium-server.jar, aggiungere il selenio-java-client-driver al mio progetto driver Eclipse Maven POM esistente; quindi lanciare lo stesso test JUnit esportato in Eclipse. Volevo principalmente usare Java solo per il ciclo che l'IDE di base Selenium non supportava.

Ho anche configurato JSF Unit per il mio progetto che richiede più tempo per la configurazione ... ancora più importante con test in-container come JSFUnit le modifiche al test richiedono la ricostruzione del WAR, la ridistribuzione nel contenitore e quindi l'esecuzione da Eclipse o tramite un browser.Quindi per provare rapidamente un piccolo cambiamento questo richiede molto tempo. Ovviamente con JSFUnit hai accesso a tutti i componenti interni di JSFSession ecc, quindi dipende da quale granularità dei test hai bisogno di indovinare.

Sarei interessato se qualcuno conosce un modo più rapido per modificare i cambiamenti in un test JSFUnit ed eseguirlo. Sicuramente i test al selenio sembrano più simili ai test di JUnit a tale riguardo.