Pour une recherche que je fais, j'ai besoin de capturer l'état du résultat (réussi/échoué) après avoir exécuté la méthode de test (@Test), à partir de @AfterMethod.
J'utilise le fichier import org.testng.ITestResult; comme un résultat de mes recherches pour faciliter mon travail après être allé sur plusieurs blogs en ligne, mais il semble que cela n'ait pas réussi mon attente, comme toujours les résultats sont passés, même si une assertion a échoué .
Mon code est le suivant:
public class SampleTestForTestProject {
ITestResult result;
@Test(priority = 1)
public void testcase(){
// intentionally failing the assertion to make the test method fail
boolean actual = true;
boolean expected = false;
Assert.assertEquals(actual, expected);
}
@AfterMethod
public void afterMethod() {
result = Reporter.getCurrentTestResult();
switch (result.getStatus()) {
case ITestResult.SUCCESS:
System.out.println("======PASS=====");
// my expected functionality here when passed
break;
case ITestResult.FAILURE:
System.out.println("======FAIL=====");
// my expected functionality here when passed
break;
case ITestResult.SKIP:
System.out.println("======SKIP BLOCKED=====");
// my expected functionality here when passed
break;
default:
throw new RuntimeException("Invalid status");
}
}
}
Résultat dans la console:
[TestNG] Running: C:\Users\USER\AppData\Local\Temp\testng-Eclipse--988445809\testng-customsuite.xml
======PASS=====
FAILED: testcaseFail
Java.lang.AssertionError: expected [false] but found [true]
Je m'attends à obtenir le résultat du test dans une variable pour passer par le commutateur, comme indiqué dans l'extrait de code ci-dessus, et à imprimer "====== FAIL =====" lorsque la méthode de test échoue.
Quelqu'un pourra-t-il m'aider à saisir le résultat du test d'exécution pour chaque méthode de test (@Test). Si la méthode que j'ai approchée est incorrecte, veuillez m'aider avec un extrait de code à la bonne approche, avec bonté.
Merci d'avance
simplement fais-le:
public class stacktest {
@Test
public void teststackquestion() {
boolean actual = true;
boolean expected = false;
Assert.assertEquals(actual, expected);
}
@AfterMethod
public void afterMethod(ITestResult result)
{
try
{
if(result.getStatus() == ITestResult.SUCCESS)
{
//Do something here
System.out.println("passed **********");
}
else if(result.getStatus() == ITestResult.FAILURE)
{
//Do something here
System.out.println("Failed ***********");
}
else if(result.getStatus() == ITestResult.SKIP ){
System.out.println("Skiped***********");
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
TestListenerAdapter
a des méthodes pour chacune de ces situations (succès, ignoré, échec). Ma suggestion est de faire votre propre auditeur comme ça.
public class MyTestResultListener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult result) {
// do what you want to do
}
@Override
public void onTestSuccess(ITestResult result) {
// do what you want to do
}
@Override
public void onTestSkipped(ITestResult result) {
// do what you want to do
}
}
Ajoutez ensuite votre écouteur à la classe de test.
@Listeners(MyTestResultListener.class)
public class MyTest {
// your tests
}