Vra

By die werk wat ons tans nog steeds met behulp van JUnit 3 te loop ons toetse.Ons is die oorweging skakel oor na JUnit 4 vir nuwe toetse word geskryf, maar ek is die behoud van'n oog op TestNG vir'n rukkie nou.Watter ervarings het jy al gehad het met óf JUnit 4 of TestNG, en wat blyk om beter te werk vir'n baie groot getalle van die toetse?Met buigsaamheid in die skryf van toetse is ook vir ons belangrik aangesien ons funksionele toetse dek'n wye aspek en nodig het om geskryf te word in'n verskeidenheid van maniere om resultate te kry.

Ou toetse sal nie weer geskryf as hulle doen hul werk net'n boete.Wat ek wil om te sien in die nuwe toetse al is buigsaamheid in die manier waarop die toets geskryf kan word, natuurlike bewerings, groepering, en maklik versprei toets teregstellings.

Was dit nuttig?

Oplossing

Ek het beide gebruik, maar ek moet saamstem met Justin Standard dat jy moet regtig nie oorweeg jou bestaande toetse herskryf om 'n nuwe formaat. Ongeag die besluit, dit is redelik triviaal om beide hardloop. TestNG streef veel meer konfigureerbare as JUnit te wees, maar op die ou end hulle albei werk ewe goed.

TestNG het 'n netjiese kenmerk waar jy toetse as 'n bepaalde groep kan merk, en dan maklik uit te voer alle toetse van 'n spesifieke groep, of uitsluit toetse van 'n bepaalde groep. So jy kan toetse wat stadig loop as in die "stadige" groep en dan ignoreer hulle wanneer jy vinnig resultate wil sien. 'N Voorstel van hul dokumentasie is 'n paar subset as "checkin" toetse wat moet uitgevoer word wanneer jy nuwe lêers is so te sien. Ek het nog nooit so 'n funksie in JUnit, maar dan weer, as jy dit nie het nie, jy nie' t regtig mis dit.

Vir alle eise van hoë opset, het ek loop in 'n hoek geval die 'n paar weke gelede waar ek nie kon doen wat ek wou doen ... Ek wens ek kon onthou wat dit is, maar ek wou bring dit op sodat jy weet wat dit is nie volmaak nie.

Die grootste voordeel TestNG het is annotasies ... wat Junit bygevoeg in weergawe 4 anyways.

Ander wenke

Eerste sou ek sê, nie herskryf al jou toetse net om die nuutste gier pas. Junit3 werk baie goed, en die bekendstelling van notas in 4 jou nie te koop baie (in my opinie). Dit is veel belangriker dat jy ouens skryf toetse, en dit klink asof jy doen.

Gebruik ook al lyk mees natuurlike en help jou om jou werk gedoen.

Ek kan nie kommentaar lewer op TestNG b / c Ek het dit nie gebruik word nie. Maar ek sou aanbeveel unitils , 'n groot wrapper vir JUnit / TestNG / DBUnit / EasyMock, ongeag van wat roete wat jy neem. (Dit word ondersteun deur al die bogenoemde geure)

Oor 'n jaar gelede, ons het dieselfde probleem. Ek het iewers oorweeg wat skuif beter was, en uiteindelik het ons besef dat TestNG het geen 'n moordenaar eienskappe. Dit is lekker, en het 'n paar eienskappe JUnit 4 het nie, maar ons het hulle nie nodig.
Ons het nie wil hê mense moet ongemaklik skryf van toetse voel terwyl jy weet TestNG omdat ons hulle wou hou skryf 'n klomp toetse.
Ook, JUnit is pretty much die de-facto standaard in die Java wêreld. Daar is geen ordentlike instrument wat beteken dit nie ondersteun uit die boks, kan jy 'n baie hulp op die web te vind en hulle het bygevoeg 'n baie nuwe funksies in die afgelope jaar, wat toon dit is lewendig.

Ons het besluit om vas te hou met JUnit en nooit weer teruggekyk nie.

TestNG se grootste teken kaarte vir my sluit sy ondersteuning toets groepe, en meer belangrik - toets groep afhanklikhede (nasien van'n toets as om afhanklik van'n groep veroorsaak dat die toetse om net te slaan loop wanneer die afhanklike groep nie).

TestNG se ander groot trek kaarte vir my sluit toets parameters, data verskaffers, body transformers, en meer as enigiets - die lewendige en reageer gebruiker gemeenskap.

Terwyl dit op die oppervlak mens kan nie dink almal van TestNGs funksies hierbo dalk nie nodig wees nie, sodra jy begin om te verstaan die buigsaamheid bring jou toetse, sal jy wonder hoe jy coped met JUnit.

(disclaimer - ek het nie gebruik word nie JUnit 4.x op alle, so ek kan nie regtig kommentaar lewer op vooruitgang of nuwe funksies daar).

Cheers aan al die bogenoemde. Sommige ander dinge wat ek persoonlik het ek graag meer in TestNG is:

  1. Die @BeforeClass vir TestNG plaasvind nadat die klas skepping, sodat jy nie beperk deur net in staat is om statiese metodes van jou klas roep in dit.

  2. Parallel en parameters toetse, miskien is ek net nie genoeg van 'n lewe te hê ... maar ek kry net 'n skop skryf 'n stel van Selenium toetse, die aanvaarding van 'n naam bestuurder as 'n parameter. Dan definieer 3 parallel toets groepe, 1 elk vir die IE, VF en Chrome bestuurders, en kyk na die wedloop! Ek het aanvanklik het 4, maar te veel van die bladsye Ek het gewerk op die HtmlUnit bestuurder vir een of ander rede te breek.

Ja, moet waarskynlik aan die lewe te vind. ;)

Ek wou die een wat ek vandag teëgekom deel. Ek het gevind dat 'n ingeboude Geparametriseerde naaswenner is nogal kru in Junit4 as vergelyk met TestNG (Ek weet elke raamwerk het sy sterk punte, maar nog steeds). Die Junit4 body @parameters is beperk tot 'n stel van parameters. Ek hierdie probleem ondervind tydens die toets van die geldige en ongeldige gedrag vir funksies in dieselfde toets klas. So die eerste openbare, statiese geannoteerde metode wat dit vind sal gebruik word, maar dit kan hulle vind in enige volgorde. Dit veroorsaak dat ons verskillende klasse onnodig skryf. TestNG bied egter skoon manier om verskillende soorte data verskaffers vir elke metode te verskaf. So kan ons dieselfde eenheid van kode te toets met 'n geldige en ongeldige wyse dieselfde toetsklas om die geld / ongeldig data afsonderlik. Ek sal gaan met TestNG.

Ook nog 'n voordeel van TestNG ondersteun van parallel toets. In ons era van multicores dis belangrik, ek dink.

Ek gebruik ook beide raamwerke. Maar ek gebruik van hamcrest vir assertations. Hamcrest kan jy maklik skryf jou eie Assert metode. So in plaas van

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

Jy kan skryf

assertThat(operation, isActive());

Dit gee jou die geleentheid om 'n hoër vlak van abstraksie in jou toetse. En dit maak jou toetse meer robuuste.

'n Paar toevoegings tot antwoord Mike Stone se:

1) Die mees algemene ding wat ek gebruik TestNG se groepe vir wanneer ek wil 'n enkele toets metode in 'n toets suite hardloop. Ek hierdie toets voeg net na die groep "Phil" en dan loop hierdie groep. Toe ek die gebruik van JUnit 3, sou ek 'n opmerking uit die inskrywings vir alle metodes maar die een wat ek wou hardloop in die "suite" metode, maar dan algemeen sou vergeet om hulle uncomment voor checkin. Met die groepe, ek hierdie probleem nie meer nie.

2) Afhangende van die kompleksiteit van die toetse, migreer toetse uit JUnit3 om TestNG kan ietwat outomaties met sed gedoen en die skep van 'n basis klas te vervang toets besluit dat statiese invoer al die TestNG beweer metodes.

Ek het inligting oor my migrasie van JUnit om TestNG hier en hier .

JUnit 4 Vs TestNG -. Vergelyking deur mkyong.com (updated on 2013)

Gevolgtrekking: Ek stel voor om TestNG gebruik as 'n kern-eenheid toets raamwerk vir Java projek, omdat TestNG is meer vooraf in parameteriseren toets, afhanklikheid toetsing en suite-toetsing (Groepering konsep).

TestNG bedoel vir funksionele, hoë-vlak toets en komplekse integrasie toets. Sy buigsaamheid is in besonder bruikbare met groot toets suites.

Verder TestNG ook dek die hele kern JUnit4 funksies . Dis net geen rede vir my om JUnit meer gebruik.

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

Jy kan meer gedetailleerde vergelyking vind hier .

Ek hou van die netjiese en maklik integrasie van TestNG met Guice.

Jou vraag blyk twee gevou om my. Aan die een het wat jy graag wil twee toets raamwerke vergelyk, aan die ander kant wil jy maklik toetse uit te voer, het natuurlike verklarings, ens ...

Ok, eerstens JUnit speel al katchup met TestNG in terme van funksionaliteit, hulle het die gaping oorbrug sommige wat met v4, maar nie goed genoeg in my opinie. Dinge soos notas en dataproviders is nog baie beter in TestNG. Ook is hulle meer buigsaam in terme van toets uitvoering, aangesien TestNG het toets afhanklikheid, groepering en bestel.

JUnit nog vereis sekere voor / na metodes om statiese, wat beperk wat jy kan doen voor die loop van toetse wees, TestNG het nooit hierdie probleem.

TBH, meestal die verskille tussen die twee raamwerke nie veel beteken nie, tensy jou fokus op integrasie / outomatisering toets. JUnit uit my ervaring is gebou van die grond af vir eenheid toets en word nou gedruk na hoër vlakke van die toets, wat IMO maak dit die verkeerde gereedskap vir die werk. TestNG doen goed aan eenheid toets en as gevolg van sy sterk dataproviding en 'n groot toets uitvoering vermoëns, werk selfs beter by integrasie / outomatisering toetsvlak.

Nou vir wat ek glo is 'n aparte kwessie, hoe om goed gestruktureerd, leesbaar en onderhou toetse skryf. Die meeste van hierdie ek is seker jy weet, maar dinge soos Factory Patroon , Command Patroon en PageObjects (as jou toets webtuistes) is noodsaaklik, dit is baie belangrik om 'n laag van abstraksie tussen wat jou toets (Mardi Delport) en wat die werklike toets is (stellings van besigheid logika) het. Ten einde baie lekkerder bewerings het, kan jy Hamcrest gebruik. Maak gebruik van javas erfenis / koppelvlakke na herhaling te verminder en te dwing gemeenskaplikheid.

amper vergeet, ook die toetsdata Bouwer Patroon , hierdie tesame met TestNG se dataverskaffer body gebruik is baie nuttig.

My mening oor wat TestNG maak werklik baie sterker:

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.

Hoekom gebruik ons TestNG in plaas van JUnit?

  1. Die verklaring van die @BeforeClass en @AfterClass metode het om staties te wees in JUnit terwyl, daar is meer buigsaamheid in TestNG in die metode verklaring, is dit nie hierdie beperkings.

  2. In TestNG, kan ons parametrize toetse met behulp van 2 maniere.@Parameter of @DataProvider body.

    i) @Parameter vir eenvoudige gevalle, waar die sleutel waarde kartering word vereis.(data word verskaf deur middel van die xml-lêer)

    ii) @DataProvider vir komplekse gevalle.Die gebruik van 2 dimensionele skikking, kan Dit verskaf data.

  3. In TestNG, aangesien @DataProvider metode moet nie staties wees nie, ons kan gebruik om verskeie data verskaffer metodes in die dieselfde toets klas.

  4. Afhanklikheid Toets: In TestNG, as die aanvanklike toets nie, dan is alle daaropvolgende afhanklik toetse sal oorgeslaan word, nie gemerk as misluk.Maar JUnit gemerk het dit misluk.

  5. Groepering: Enkele toetse kan behoort aan verskeie groepe en dan hardloop in verskillende kontekste (soos stadige of vinnige toetse).'n soortgelyke funksie bestaan in JUnit Kategorieë, maar het nie die @BeforeGroups / @AfterGroups TestNG notas wat toelaat dat initializing die toets / skeur dit af.

  6. Parallelisme: As jy wil om te hardloop met die dieselfde toets in parallel op verskeie drade, TestNG het u gedek met'n maklik om te gebruik body terwyl JUnit nie bied'n eenvoudige manier om dit te doen uit die boks.

  7. TestNG @DataProvider kan ook XML ondersteuning vir die voeding in die data, CSVs, of selfs gewone teks lêers.

  8. TestNG kan jy om te verklaar afhanklikhede tussen toetse, en slaan hulle as die afhanklikheid toets nie slaag.

@Toets(dependsOnMethods = { "dependOnSomething" })

Hierdie funksie nie bestaan in JUnit

  1. Verslagdoening:

TestNG verslae gegenereer word deur die standaard om'n toets-uitset gids wat insluit HTML-verslae met al van die toets data, geslaag/gedruip/oorgeslaan, hoe lank het hulle hardloop, insette wat gebruik is en die volledige toets logs.Daarbenewens is dit ook uitvoere alles tot'n XML-lêer wat gebruik kan word om te bou jou eie verslag sjabloon.

Op die JUnit die voorkant, al hierdie data is ook beskikbaar via XML, maar daar is geen uit die boks verslag en wat jy nodig het om te vertrou op plugins.

Bron Skakel:

  1. 'n Vinnige JUnit vs TestNG Vergelyking
  2. JUnit vs.TestNG:Wat Die Toets Raamwerk Moet Jy Kies?

'n goeie verskil is gegee in hierdie handleiding kant deur kant: TestNG Vs JUnit:Wat is die Verskil?

beide is byna dieselfde. TestNG het n paar ekstra featurs soos testsuits en dependecy. Vind asseblief die aangehegte screeshot om die volle vergelyking kry. volle Juni5 vs TestNG Vergelyking

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top