TestNG - TestNG

TestNG
Utvecklare Cédric Beust, TestNG -teamet
Stabil frisättning
7.3.0 / 19 september 2020 ; 11 månader sedan ( 2020-09-19 )
Förvar
Skrivet i Java
Operativ system Plattformsoberoende
Typ Enhetstestning verktyg
Licens Apache -licens 2.0
Hemsida testng .org

TestNG är en test ramverk för programmeringsspråket Java som skapats av Cédric Beust och inspirerad av JUnit och NUnit . DesignMålet för TestNG är att täcka ett bredare spektrum av testkategorier: enhet, funktionell, end-to-end, integration, etc., med mer kraftfulla och lättanvända funktioner.

Funktioner

TestNGs främsta funktioner inkluderar:

  1. Annotationsstöd.
  2. Stöd för datadriven/parametrerad testning (med @DataProvideroch/eller XML-konfiguration).
  3. Stöd för flera instanser av samma testklass (med @Factory)
  4. Flexibel utförande modell. TestNG kan köras antingen av Ant via build.xml (med eller utan en testsvit definierad) eller av ett IDE -plugin med visuella resultat. Det finns ingen TestSuiteklass, medan testsviter, grupper och tester som väljs att köras definieras och konfigureras av XML -filer.
  5. Samtidiga tester: kör test i godtyckligt stora trådpooler med olika policyer tillgängliga (alla metoder i sin egen tråd, en tråd per testklass, etc.) och testa om koden är flertrådssäker.
  6. Bädda in BeanShell för ytterligare flexibilitet.
  7. Standard JDK -funktioner för körning och loggning (inga beroenden).
  8. Beroende metoder för test av applikationsserver.
  9. Distribuerad testning: möjliggör distribution av tester på slavmaskiner.


Dataleverantör

En dataleverantör i TestNG är en metod i en testklass, som tillhandahåller en rad varierade faktiska värden till beroende testmetoder.

Exempel:

	//This method will provide data to any test method that declares that its Data Provider is named "provider1". 
	@DataProvider(name = "provider1")
	public Object[][] createData1() {
		return new Object[][] { 
			{ "Cedric", new Integer(36) },
			{ "Anne", new Integer(37) }
		};
	}

	// This test method declares that its data should be supplied by the Data Provider named "provider1".
	@Test(dataProvider = "provider1")
	public void verifyData1(String n1, Integer n2) {
		System.out.println(n1 + " " + n2);
	}

	// A data provider which returns an iterator of parameter arrays.
	@DataProvider(name = "provider2")
	public Iterator<Object[]> createData() {
		return new MyIterator(...);
	}	

	// A data provider with an argument of the type java.lang.reflect.Method.
	// It is particularly useful when several test methods use the same 
	// provider and you want it to return different values depending on 
	// which test method it is serving. 
	@DataProvider(name = "provider3")
	public Object[][] createData(Method m) {
		System.out.println(m.getName()); 
		return new Object[][] { new Object[] { "Cedric" } };
	}

Den returnerade typen av en dataleverantör kan vara en av följande två typer:

  • En uppsättning objektobjekt ( Object[][]) där den första dimensionens storlek är antalet gånger testmetoden kommer att åberopas och den andra dimensionens storlek innehåller en uppsättning objekt som måste vara kompatibla med parametertyperna för testmetoden.
  • An Iterator<Object[]>. Den enda skillnaden med Object[][]är att en Iterator låter dig skapa dina testdata lata. TestNG anropar iteratorn och sedan testmetoden med parametrarna som returneras av denna iterator en efter en. Detta är särskilt användbart om du har många parameteruppsättningar att överföra till metoden och du inte vill skapa dem alla på förhand.

Verktygsstöd

TestNG stöds, out-of-the-box eller via plug-ins, av var och en av de tre stora Java IDE: erna Eclipse , IntelliJ IDEA och NetBeans . Det kommer också med en anpassad uppgift för Apache Ant och stöds av Maven -byggsystemet. Den Hudson kontinuerlig integration server har inbyggt stöd för TestNG och kan spåra och kartlägga testresultat över tiden. De flesta Java kodtäckning verktyg, såsom cobertura , arbete sömlöst med TestNG.

Obs! TestNG-stöd för Eclipse är bara inbäddat i Eclipse Marketplace för Eclipse-versioner fram till 2018-09 (4.9). För senare versioner av Eclipse måste TestNG installeras manuellt enligt instruktionerna på TestNG -webbplatsen.

Rapportering

TestNG genererar testrapporter i HTML- och XML -format. XML -utmatningen kan transformeras av Ant JUnitReport -uppgiften för att generera rapporter som liknar de som erhålls vid användning av JUnit. Sedan version 4.6 har TestNG också ett reporter-API som gör det möjligt att använda tredje parts rapportgeneratorer, till exempel ReportNG, PDFngreport och TestNG-XSLT.

Jämförelse med JUnit

TestNG har en långvarig rivalitet med ett annat testverktyg JUnit . Varje ram har skillnader och respektive fördelar. Stack Overflow -diskussioner återspeglar denna kontrovers.

Anteckningar

I JUnit 5 måste metoderna @BeforeAll och @AfterAll deklareras som statiska under de flesta omständigheter. TestNG har inte denna begränsning.

TestNG innehåller ytterligare fyra konfigurations-/rivningskommentarerpar för testpaketet och grupper: @BeforeSuite, @AfterSuite, @BeforeTest, @AfterTest, @BeforeGroup och @AfterGroup, @BeforeMethod och @AfterMethod. TestNG ger också stöd för att automatisera testning av en applikation med selen.

Parameteriserad testning

Parameteriserad testning implementeras i båda verktygen, men på ganska olika sätt.

TestNG har två sätt att tillhandahålla varierande parametervärden till en testmetod: genom att ställa in testng.xml och definiera en @DataProvider -metod.

I JUnit 5 tillåter @ParameterizedTest -annotering parametrerad testning. Denna kommentar kombineras med en annan kommentar som deklarerar källan till parametrerade argument, till exempel @ValueSource eller @EnumSource . Med @ArgumentsSource kan användaren implementera en mer dynamisk ArgumentsProvider. I JUnit 4 används @RunWith och @Parameters för att underlätta parametrerade tester, där @Parameters -metoden måste returnera a List[]med de parametrerade värdena, som matas in i testklasskonstruktorn.

Slutsats

Olika användare föredrar ofta vissa funktioner i en eller annan ram. JUnit är mer populärt och levereras ofta med vanliga IDE som standard. TestNG är känt för extra konfigurationsalternativ och kapacitet för olika typer av tester. Vilken som passar bäst beror på användningskontext och krav.

Se även

Referenser


externa länkar