27
1 TestNG Parce que vos tests le valent bien ! Romain Linsolas @romaintaz

Devoxx test ng

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Devoxx test ng

1

TestNGParce que vos tests le valent

bien !Romain Linsolas

@romaintaz

Page 2: Devoxx test ng

2

Abstract

•TestNG, kézako ?

•Parlons fonctionnalités…

Page 3: Devoxx test ng

3

Romain Linsolas

•Développeur Java / Web depuis 2002

•Éleveur d'usines logicielles

•@ Société Générale

@romaintaz

http://linsolas.free.fr/wordpress

Page 4: Devoxx test ng

1. Présentation

4

Page 5: Devoxx test ng

Test « New Generation »

•Créé par Cédric Beust (Google) en avril 2004

•Version 6.5.1

5

http://testng.org/

https://github.com/cbeust/testng

6.56.06.05.05.0

201220112010200920082007200620052004

4.04.02.02.01.01.0

Page 6: Devoxx test ng

Support IDE / buildersNatif Par plugin

6

Page 7: Devoxx test ng

2. Fonctionnalités

Parce qu'il y en a plein dedans !

7

Page 8: Devoxx test ng

@Test(non parce que c’est une librairie de tests quand même)

expectedExceptions

timeOut

Méthode ou classe

dependsOnMethods / dependsOnGroup

expectedExceptionsMessageRegExp

groups

dataProvider

invocationCount, singleThreaded threadPoolSize

priority

8

Page 9: Devoxx test ng

@Annotations

@BeforeMethod / @AfterMethod

@BeforeClass / @AfterClass

@BeforeTest / @AfterTest

@BeforeSuite / @AfterSuite

@BeforeGroups / @AfterGroups

9

Page 10: Devoxx test ng

Groupes de tests

10

Page 11: Devoxx test ng

@Test(groups = { "non-regression" })

public class MonTest {

@Test(groups = { "slow",  "integration" })

public void sloooooowTest() { ... }

@Test(groups = { "fast" })

public void fastTest() { ... }

11

Page 12: Devoxx test ng

Avec JUnit…

@Category(Integration.class) @Test

public void unTest { ... }

@RunWith(Categories.class)

@IncludeCategory(IntegrationTest.class)

@SuiteClasses({ Test1.class, Test2.class })

public class IntegrationTestSuite { }

12

Page 13: Devoxx test ng

java org.testng.TestNG -groups non-regression

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<configuration>

<groups>non-regression</groups>

</configuration>

</plugin>

13

Page 14: Devoxx test ng

Dépendances de tests

14

Page 15: Devoxx test ng

public class MonTest {

@Test

public void deployOnTomcat() { ... }

@Test(dependsOnMethods = {"deployOnTomcat"})

public void testWebUI() { ... }

@Test(dependsOnGroups= {"integration.*"})

public void someDependentTests() { ... }

15

Page 16: Devoxx test ng

public class MonTest {

@Test

public void firstTest() { ... }

@Test(dependsOnMethods = {"firstTest"},

alwaysRun = true)

public void secondTest() { ... }

16

Page 17: Devoxx test ng

Les Listeners

17

Page 18: Devoxx test ng

@Test @Listeners(MonListener.class)

public class maClasseDeTests { ... }

public class MonListener implements ITestListener {

public void onTestFailure(ITestResult res) { ... }

public void onFinish(ITestContext cxt) { ... }

18

Page 19: Devoxx test ng

IAnnotationTransformer

IAnnotationTransformer2

IHookable

IInvokedMethodListener

IMethodInterceptor

IReporter

ISuiteListener

ITestListener

19

Page 20: Devoxx test ng

Tests paramétrés

20

Page 21: Devoxx test ng

@Test @Parameters({ "db" })

public void monTest(String db) { … }

<suite name="ma-suite">

<parameter name="db" value="oracle"/>

<test name="monTest"/>

21

Page 22: Devoxx test ng

@DataProvider(name = "mon-provider")

public Object[][] getObjects() {

return new Object[][] {

{ 1, 1 }, { 5, 120 }

};

}

@Test(dataProvider = "mon-provider")

public void testFactorielle(int valeur, int resultat) {

assertEquals(resultat, App.factorielle(valeur));

}

22

Page 23: Devoxx test ng

Les Factories

23

Page 24: Devoxx test ng

public class TestNGFactory {

private String foo;

public TestNGFactory(String foo) { this.foo = foo; }

@Factory public Object[] factory() {

return new Object[] {

new TestNGFactory("hello"),

new TestNGFactory("Devoxx") };

}

@Test public void test() {

System.out.println("==> " + foo);

}

}

24

Page 25: Devoxx test ng

Et plein d'autres choses…

25

Support du YAML

Rapports de résultats(xml, html)

Logger inclus

Rerun failing tests first

Support Guice

Peut lancer du JUnit 3.x

Page 26: Devoxx test ng

26

Page 27: Devoxx test ng

Questions…

27