TestNGParce que vos tests le valent bien !             Romain Linsolas              @romaintaz                            ...
Abstract• TestNG, kézako ?• Parlons fonctionnalités…                             2
Romain Linsolas•Développeur Java / Web depuis 2002•Éleveur dusines logicielles•@ Société Générale  @romaintaz  http://lins...
1. Présentation                  4
Test « New Generation »   http://testng.org/    https://github.com/cbeust/testng• Créé par Cédric Beust (Google) en avril ...
Support IDE / buildersNatif              Par plugin                                 6
2. Fonctionnalités   Parce quil y en a plein dedans !                                       7
@Test               (non parce que c’est une librairie de tests quand même)expectedExceptions                  Méthode ou ...
@Annotations@BeforeMethod / @AfterMethod   @BeforeTest / @AfterTest@BeforeClass / @AfterClass     @BeforeSuite / @AfterSui...
Groupes de tests                   10
@Test(groups = { "non-regression" })public class MonTest {   @Test(groups = { "slow",     "integration" })   public void s...
Avec JUnit…@Category(Integration.class) @Testpublic void unTest { ... }@RunWith(Categories.class)@IncludeCategory(Integrat...
java org.testng.TestNG -groups non-regression <plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven...
Dépendances de tests                       14
public class MonTest {   @Test   public void deployOnTomcat() { ... }   @Test(dependsOnMethods = {"deployOnTomcat"})   pub...
public class MonTest {   @Test   public void firstTest() { ... }   @Test(dependsOnMethods = {"firstTest"},           alway...
Les Listeners                17
@Test   @Listeners(MonListener.class)public class maClasseDeTests { ... }public class MonListener implements ITestListener...
IAnnotationTransformerIAnnotationTransformer2IHookableIInvokedMethodListenerIMethodInterceptorIReporterISuiteListenerITest...
Tests paramétrés                   20
@Test   @Parameters({ "db" })public void monTest(String db) { … }<suite name="ma-suite"> <parameter name="db" value="oracl...
@DataProvider(name = "mon-provider")public Object[][] getObjects() {    return new Object[][] {         { 1, 1 }, { 5, 120...
Les Factories                23
public class TestNGFactory {    private String foo;    public TestNGFactory(String foo) { this.foo = foo; }    @Factory pu...
Et plein dautres choses…     Logger inclus           Rapports de résultats                                 (xml, html) Sup...
26
Questions…             27
Upcoming SlideShare
Loading in...5
×

Devoxx test ng

2,584

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,584
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • JUnit (créé en 1997) 4.0 est sorti en début 2006, introduction de @Test Junit est une déesse égyptienne :o) (Iounyt)
  • JUnit : @Rule TestWatcher (TestWatchman deprecated)
  • Devoxx test ng

    1. 1. TestNGParce que vos tests le valent bien ! Romain Linsolas @romaintaz 1
    2. 2. Abstract• TestNG, kézako ?• Parlons fonctionnalités… 2
    3. 3. Romain Linsolas•Développeur Java / Web depuis 2002•Éleveur dusines logicielles•@ Société Générale @romaintaz http://linsolas.free.fr/wordpress 3
    4. 4. 1. Présentation 4
    5. 5. Test « New Generation » http://testng.org/ https://github.com/cbeust/testng• Créé par Cédric Beust (Google) en avril 2004• Version 6.5.1 1.0 2.0 4.0 5.0 6.0 6.5 2004 2005 2006 2007 2008 2009 2010 2011 2012 5
    6. 6. Support IDE / buildersNatif Par plugin 6
    7. 7. 2. Fonctionnalités Parce quil y en a plein dedans ! 7
    8. 8. @Test (non parce que c’est une librairie de tests quand même)expectedExceptions Méthode ou classetimeOut dependsOnMethods / dependsOnGroup expectedExceptionsMessageRegExp groups dataProvider invocationCount, singleThreaded threadPoolSize priority 8
    9. 9. @Annotations@BeforeMethod / @AfterMethod @BeforeTest / @AfterTest@BeforeClass / @AfterClass @BeforeSuite / @AfterSuite @BeforeGroups / @AfterGroups 9
    10. 10. Groupes de tests 10
    11. 11. @Test(groups = { "non-regression" })public class MonTest { @Test(groups = { "slow", "integration" }) public void sloooooowTest() { ... } @Test(groups = { "fast" }) public void fastTest() { ... } 11
    12. 12. Avec JUnit…@Category(Integration.class) @Testpublic void unTest { ... }@RunWith(Categories.class)@IncludeCategory(IntegrationTest.class)@SuiteClasses({ Test1.class, Test2.class })public class IntegrationTestSuite { } 12
    13. 13. 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
    14. 14. Dépendances de tests 14
    15. 15. public class MonTest { @Test public void deployOnTomcat() { ... } @Test(dependsOnMethods = {"deployOnTomcat"}) public void testWebUI() { ... } @Test(dependsOnGroups= {"integration.*"}) public void someDependentTests() { ... } 15
    16. 16. public class MonTest { @Test public void firstTest() { ... } @Test(dependsOnMethods = {"firstTest"}, alwaysRun = true) public void secondTest() { ... } 16
    17. 17. Les Listeners 17
    18. 18. @Test @Listeners(MonListener.class)public class maClasseDeTests { ... }public class MonListener implements ITestListener { public void onTestFailure(ITestResult res) { ... } public void onFinish(ITestContext cxt) { ... } 18
    19. 19. IAnnotationTransformerIAnnotationTransformer2IHookableIInvokedMethodListenerIMethodInterceptorIReporterISuiteListenerITestListener 19
    20. 20. Tests paramétrés 20
    21. 21. @Test @Parameters({ "db" })public void monTest(String db) { … }<suite name="ma-suite"> <parameter name="db" value="oracle"/> <test name="monTest"/> 21
    22. 22. @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
    23. 23. Les Factories 23
    24. 24. 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
    25. 25. Et plein dautres choses… Logger inclus Rapports de résultats (xml, html) Support Guice Support du YAML Rerun failing tests first Peut lancer du JUnit 3.x 25
    26. 26. 26
    27. 27. Questions… 27
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×