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 ===============================================