TestNG - Test de dépendance

TestNG - Test de dépendance

Dans TestNG, nous utilisonsdependOnMethods etdependsOnGroups pour implémenter les tests de dépendance. Si une méthode dépendante échoue, toutes les méthodes de test suivantes seront ignorées, PAS échouées.

1. Exemple de dependOnMethods

Un exemple simple, «method2 ()» dépend de «method1 ()».

1.1 Simethod1() est passé,method2() sera exécuté.

App.java

package com.example.testng.examples.dependency;

import org.testng.annotations.Test;

public class App {

    @Test
    public void method1() {
        System.out.println("This is method 1");
    }

    @Test(dependsOnMethods = { "method1" })
    public void method2() {
        System.out.println("This is method 2");
    }

}

Sortie

This is method 1
This is method 2
PASSED: method1
PASSED: method2

===============================================
    Default test
    Tests run: 2, Failures: 0, Skips: 0
===============================================

1.2 Simethod1() échoue,method2() sera ignoré.

App.java

package com.example.testng.examples.dependency;

import org.testng.annotations.Test;

public class App {

    //This test will be failed.
    @Test
    public void method1() {
        System.out.println("This is method 1");
        throw new RuntimeException();
    }

    @Test(dependsOnMethods = { "method1" })
    public void method2() {
        System.out.println("This is method 2");
    }

}

Sortie

This is method 1
FAILED: method1
java.lang.RuntimeException
    at com.example.testng.examples.dependency.App.method1(App.java:10)
    //...

SKIPPED: method2

===============================================
    Default test
    Tests run: 2, Failures: 1, Skips: 1
===============================================

2. DependOnGroups Exemple

Créons quelques cas de test pour démontrer l'utilisation mixte dedependsOnMethods etdependsOnGroups. Voir les commentaires pour plus d'explications.

TestServer.java

package com.example.testng.examples.dependency;

import org.testng.annotations.Test;

//all methods of this class are belong to "deploy" group.
@Test(groups="deploy")
public class TestServer {

    @Test
    public void deployServer() {
        System.out.println("Deploying Server...");
    }

    //Run this if deployServer() is passed.
    @Test(dependsOnMethods="deployServer")
    public void deployBackUpServer() {
        System.out.println("Deploying Backup Server...");
    }

}

TestDatabase.java

package com.example.testng.examples.dependency;

import org.testng.annotations.Test;

public class TestDatabase {

    //belong to "db" group,
    //Run if all methods from "deploy" group are passed.
    @Test(groups="db", dependsOnGroups="deploy")
    public void initDB() {
        System.out.println("This is initDB()");
    }

    //belong to "db" group,
    //Run if "initDB" method is passed.
    @Test(dependsOnMethods = { "initDB" }, groups="db")
    public void testConnection() {
        System.out.println("This is testConnection()");
    }

}

TestApp.java

package com.example.testng.examples.dependency;

import org.testng.annotations.Test;

public class TestApp {

    //Run if all methods from "deploy" and "db" groups are passed.
    @Test(dependsOnGroups={"deploy","db"})
    public void method1() {
        System.out.println("This is method 1");
        //throw new RuntimeException();
    }

    //Run if method1() is passed.
    @Test(dependsOnMethods = { "method1" })
    public void method2() {
        System.out.println("This is method 2");
    }

}

Créez un fichier XML et testez-les ensemble.

testng.xml





  

    
      
      
      
      
      
      
    

  

Sortie

Deploying Server...
Deploying Backup Server...
This is initDB()
This is testConnection()
This is method 1
This is method 2

===============================================
TestDependency
Total tests run: 6, Failures: 0, Skips: 0
===============================================

testng-dependency-test