Domanda

Al lavoro ci sono ancora attualmente in uso di JUnit 3 per eseguire i nostri test.Abbiamo preso in considerazione di passare a JUnit 4 per nuovo le prove scritte, ma ho cercato di tenere un occhio su di TestNG per un po ' ora.Quali esperienze avete avuto tutti con JUnit 4 o TestNG, e che sembra funzionare meglio per un numero molto elevato di prove?Avere flessibilità nella scrittura di test è importante anche per noi, perché il nostro test funzionali coprono una vasta aspetto e devono essere scritti in una varietà di modi per ottenere risultati.

Vecchi test non può essere ri-scritto, come fanno il loro lavoro bene.Quello che vorrei vedere in nuovi test, però, è la flessibilità nel modo in cui il test può essere scritto, naturale, asserzioni, raggruppamento e la distribuzione di test esecuzioni.

È stato utile?

Soluzione

Ho usato entrambi, ma io sono d'accordo con Justin Standard che si dovrebbe davvero prendere in considerazione la riscrittura dell'esistente test per ogni nuovo formato.A prescindere dalla decisione, è piuttosto banale, per eseguire.TestNG si sforza di essere molto più configurabile di JUnit, ma alla fine entrambi funzionano altrettanto bene.

TestNG ha una bella caratteristica in cui è possibile contrassegnare le prove di come un gruppo particolare, e quindi facilmente eseguire tutti i test di un gruppo specifico o escludere le prove di un gruppo particolare.Così è possibile contrassegnare i test eseguiti lentamente, come in "slow" del gruppo e poi ignorare quando si desidera risultati veloci.Un suggerimento da loro documentazione è quello di segnare un sottoinsieme come "checkin" test deve essere eseguito ogni volta che si verifica di nuovi file.Non ho mai visto tale funzione in JUnit, ma poi di nuovo, se non l'avete, non è DAVVERO la mancanza.

Per tutte le sue pretese di alta configurazione, ho fatto funzionare in un angolo caso un paio di settimane fa, in cui io non potevo fare quello che volevo fare...Vorrei poter ricordare quello che è, ma ho voluto portare fino in modo che si sa che non è perfetto.

Il più grande vantaggio TestNG è annotazioni...che JUnit aggiunto nella versione 4 comunque.

Altri suggerimenti

In primo luogo vorrei dire che, non riscrivere tutti i test solo per soddisfare l'ultima moda.Junit3 funziona perfettamente, e l'introduzione di annotazioni in 4 non comprare molto (a mio parere).È molto più importante che voi ragazzi scrivere test, e non suoni come voi.

Utilizzare tutto ciò che sembra più naturale e aiuta a ottenere il vostro lavoro fatto.

Non posso commentare TestNG b/c non ho usato.Ma mi sento di raccomandare unitils, un grande wrapper per JUnit/TestNG/DBUnit/EasyMock, a prescindere di quale strada prendere.(Supporta tutti i sapori di cui sopra)

Circa un anno fa, abbiamo avuto lo stesso problema.Ho trascorso qualche tempo, considerando che si muovono era meglio, e alla fine ci siamo resi conto che TestNG non ha che l'assassino di funzionalità".È bello, e ha alcune caratteristiche JUnit 4 non hanno, ma non abbiamo bisogno di loro.
Non vogliamo che la gente a sentirsi a disagio prove di scrittura per conoscere TestNG perché volevamo continuare a scrivere un sacco di prove.
Inoltre, JUnit è praticamente lo standard de facto nel mondo Java.Non c'è strumento decente che non lo supporta dalla scatola, è possibile trovare un sacco di informazioni sul web e hanno aggiunto un sacco di nuove funzionalità nel corso dell'anno passato, che la mostra è vivo.

Abbiamo deciso di attaccare con JUnit e mai guardato indietro.

TestNG più grande disegnare carte per me sono il suo sostegno a gruppi di prova, e, cosa più importante gruppo di test dipendenze (marcatura di un test come dipendente di un gruppo di cause il test semplicemente saltare in esecuzione quando il dipendente gruppo non riesce).

TestNG altra grande disegnare le carte per me sono i parametri di prova, i fornitori di dati, annotazione trasformatori, e più di ogni cosa - vivace e reattivo comunità di utenti.

Mentre in superficie si potrebbe non pensare che TestNGs caratteristiche di cui sopra potrebbe non essere necessario, una volta che si inizia a capire la flessibilità portare al vostro test, vi chiederete come avete affrontato con JUnit.

(disclaimer: non ho usato JUnit 4.x tutti, quindi, sono in grado di commentare su anticipazioni o nuove caratteristiche c'è).

Ciao a tutti sopra.Alcune altre cose che ho trovato personalmente mi piace di più in TestNG sono:

  1. Il @BeforeClass per TestNG avviene dopo la creazione della classe, in modo che non sono vincolati da solo essere in grado di chiamare i metodi statici della classe in esso.

  2. In parallelo e con parametri di test, forse non ne ho proprio abbastanza di una vita...ma ho appena ottenere un calcio di scrivere una serie di Selenio prove di accettazione di un driver come parametro un nome.Quindi la definizione di 3 test in parallelo, gruppi, 1 ciascuno per IE, FF e Chrome driver, e guardando la gara!Originariamente ho fatto 4, ma molti di pagine ho lavorato a rompere il HtmlUnit driver per un motivo o per un altro.

Sì, probabilmente bisogno di trovare che la vita.;)

Ho voluto condividere quello che ho incontrato oggi.Ho trovato built-in con parametri runner è abbastanza grezza in Junit4 come confrontare TestNG (so che ogni quadro ha i suoi punti di forza, ma ancora).Il Junit4 annotazione @parametri è limitato ad un insieme di parametri.Ho incontrato questo problema durante il test validi e non validi comportamento per la funzionalità stessa classe di test.Così la prima volta al pubblico, statico metodo annotato che trova potranno essere utilizzati, ma si possono trovare in qualsiasi ordine.Questo ci fa scrivere diverse classi inutilmente.Tuttavia TestNG fornisce un modo pulito per fornire diversi tipi di fornitori di dati per ogni metodo.Così siamo in grado di testare la stessa unità di codice valido e non valido modo nella stessa classe di test mettendo il valido/non valido i dati separatamente.Andrò con TestNG.

Inoltre, un altro vantaggio di TestNG a sostegno di una prova parallela.Nella nostra epoca di multicore è importante, credo.

Anche io ho usato entrambi i quadri.Ma io uso hamcrest per assertations.Hamcrest ti permette di scrivere il proprio metodo assert.Così, invece di

assertEquals(operation.getStatus(), Operation.Status.Active);

Si può scrivere

assertThat(operation, isActive());

Che ti dà la possibilità di utilizzare il livello di astrazione più elevato nei test.E questo rende il test più affidabile.

Un paio di aggiunte di Mike Stone risposta:

1) Il più frequente cosa io uso TestNG gruppi per quando voglio eseguire un singolo metodo di prova in una suite di test.Ho semplicemente aggiungere il test per il gruppo "phil" e quindi eseguire questo gruppo.Quando ero con JUnit 3, vorrei commentare le voci per tutti i metodi, ma quello che ho voluto correre nella "suite" metodo, ma poi non sarebbe comunemente dimenticate di rimuovere il commento di loro prima del check-in.Con i gruppi, non ho più questo problema.

2) a Seconda della complessità del test, prove di migrazione da JUnit3 per TestNG può essere fatto un po ' automaticamente con sed e la creazione di una classe di base per sostituire TestCase che statico importa tutte le TestNG metodi di asserzione.

Non ho info sul mio migrazione da JUnit per TestNG qui e qui.

JUnit 4 Vs TestNG – Confronto con mkyong.com ( aggiornato al 2013).

Conclusione:Io suggerisco di usare TestNG come core framework di unit test per il progetto Java, perché TestNG è più anticipo in parametrizzare il test, la dipendenza, i test e le suite di test (Raggruppamento concetto).

TestNG è destinata funzionale, di alto livello, i test e complesso di test di integrazione.La sua flessibilità è particolarmente utile con grande suite di test.

Inoltre, TestNG coprire anche l'intero nucleo JUnit4 funzionalità.È proprio nessun motivo per me di utilizzare JUnit più.

In simple terms, TestNG = JUnit + lot more...So, Why debate ? go and grab TestNG :-)

È possibile trovare confronto più dettagliato qui.

Mi piace il pulito e di facile integrazione di TestNG con Guice.

La tua domanda sembra piegato in due per me.Su uno era da mettere a confronto due framework di test, invece, si vorrebbe implementare test, naturale, asserzioni, ecc...

Ok, in primo luogo JUnit è stato giocando catchup con TestNG in termini di funzionalità, hanno colmato il divario che con la v4, ma non abbastanza bene a mio parere.Cose come le annotazioni e dataproviders sono ancora molto meglio in TestNG.Inoltre, sono più flessibili in termini di esecuzione del test, in quanto TestNG ha test di dipendenza, di raggruppamento e ordinamento.

JUnit richiede certe prima/dopo di metodi statici, che limita ciò che si può fare prima dell'esecuzione del test, TestNG non ha questo problema.

TBH, soprattutto le differenze tra i due quadri non significano molto, a meno che la messa a fuoco su integrazione e/o di automazione di test.JUnit la mia esperienza è costruito dalla terra in su per i test di unità, ed è ora in fase di spinta verso più alti livelli di test, che IMO rende lo strumento sbagliato per il lavoro.TestNG fa bene a unit test e grazie alla sua robusta dataproviding e grande esecuzione dei test di abilità, funziona anche meglio a integrazione e/o di automazione di test di livello.

Ora, per quello che credo io, è una questione a parte, come scrivere ben strutturato, leggibile e mantenibile test.Più di questo io sono sicuro che tu sai, ma cose come Modello Factory, Command Pattern e PageObjects (se il vostro test di siti web) sono di vitale importanza, è molto importante avere un livello di astrazione tra quello che il tuo test (SUT) e che il test vero e proprio è (affermazioni di logica di business).In modo da avere molto più bello affermazioni, è possibile utilizzare Hamcrest.Fare uso di java eredità/interfacce per ridurre la ripetizione e applicare comunanza.

Quasi dimenticavo, anche utilizzare l' Dati Di Prova Del Generatore Di Pattern, questo, accoppiato con TestNG dataprovider annotazione è molto utile.

La mia opinione su ciò che rende TestNG davvero molto più potente:

1.  JUnit still requires the before/after class methods to be static, which limits
    what you can do prior to the running of tests, TestNG never has this issue.

2.  TestNG @Configuration methods can all take an optional argument to their 
    annotated methods in the form of a ITestResult, XmlTest, Method, or 
    ITestContext.  This allows you to pass things around that JUnit wouldn't 
    provide you.  JUnit only does this in listeners and it is limited in use.

3.  TestNG comes with some pre-made report generation classes that you can copy
     and edit and make into your own beautiful test output with very little 
     effort. Just copy the report class into your project and add a listener 
     to run it.  Also, ReportNG is available.

4.  TestNG has a handful of nice listeners that you can hook onto so you can do
     additional AOP style magic at certain phases during testing.

Perché usiamo TestNG invece di JUnit?

  1. La dichiarazione di @BeforeClass e @AfterClass il metodo deve essere statico in JUnit considerando che c'è più flessibilità in TestNG nella dichiarazione del metodo, non hanno questi vincoli.

  2. In TestNG, siamo in grado di parametrizzare prove con l'utilizzo di 2 modi.Parametro @o @DataProvider annotazione.

    i) @Parametro per i casi più semplici, dove il valore della chiave è necessario mappare.(i dati vengono forniti tramite file xml)

    ii) @DataProvider per i casi più complessi.Utilizzando 2 matrice bidimensionale, può fornire i dati.

  3. In TestNG, poiché @DataProvider metodo non deve essere statica, siamo in grado di utilizzare più provider di dati metodi della stessa classe di test.

  4. Dipendenza Di Test: In TestNG, se il primo test ha esito negativo, di tutti i dipendenti test verrà ignorato, non contrassegnati come non riuscito.Ma JUnit segnato non è riuscito.

  5. Raggruppamento: Singolo test può appartenere a più gruppi e quindi eseguire in diversi contesti (come lento o veloce test).Una funzionalità simile esiste in JUnit Categorie, ma manca l' @BeforeGroups / @AfterGroups TestNG annotazioni che consentono di inizializzare il test / strappo verso il basso.

  6. Parallelismo: Se desideri eseguire lo stesso test in parallelo su più thread, TestNG ha coperto con una semplice annotazione, mentre JUnit non offre un modo semplice per farlo fuori dalla scatola.

  7. TestNG @DataProvider anche il supporto di XML per l'alimentazione dei dati, Csv, o anche semplice file di testo.

  8. TestNG consente di dichiarare le dipendenze tra le prove, e li saltare se la dipendenza test non e ' passato.

@Test(dependsOnMethods = { "dependOnSomething" })

Questa funzionalità non esiste in JUnit

  1. Segnalazione:

TestNG report vengono generati dal default di un test-cartella di output che include report HTML con tutti i dati di test, passato/fallito/saltato, per quanto tempo hanno eseguito, il cui ingresso è stato utilizzato e il test completo registri.Inoltre, le esportazioni, il tutto in un file XML che può essere utilizzato per costruire il vostro proprio modello di report.

Sul JUnit, ant, tutto questo insieme di dati è disponibile anche tramite XML, ma non c'è, fuori dalla scatola report e avete bisogno di fare affidamento su plugin.

Risorse Link:

  1. Un Rapido JUnit vs TestNG Confronto
  2. JUnit vsTestNG:Che Framework Di Test Si Dovrebbe Scegliere?

Una buona differenza è data in questo tutorial, fianco a fianco: TestNG Vs JUnit:Qual è la Differenza?

entrambi sono quasi lo stesso.TestNG ha alcuni extra featurs come testsuits e dependecy.si prega di trovare l'allegata screeshot per ottenere il pieno confronto. completa Juni5 vs TestNG Confronto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top