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