TestNG注释- @AfterMethod

之前,我们讨论了@BeforeMethod注释,在这篇文章中,我们将讨论TestNG的@AfterMethod注释。@AfterMethod注释的方法在类中的每个测试用例或测试方法之后执行。

那么,这个带@AfterMethod注释的方法什么时候执行呢?

下面的XML将帮助您理解带注释的方法的执行点。


 

    
        
            
                
 
                    
                    
 
                    
                    
                
            
            
                
 
                    
                    
 
                    
                    
                
            
        
    

因此,如上面的XML所示,@AfterMethod注释的方法将在类中的每个测试用例之后执行。让我们看看实际情况。

CodekruTestFirst.java

package Test;
 
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
 
public class CodekruTestFirst {
 
    @AfterMethod
    public void afterMethod() {
        System.out.println("afterMethod in CodekruTestFirst class");
    }
 
    @Test
    public void testMethod1() {
        System.out.println("Executing the test1 in CodekruTestFirst class");
        Assert.assertTrue(true);
    }
 
    @Test
    public void testMethod2() {
        System.out.println("Executing the test2 in CodekruTestFirst class");
        Assert.assertTrue(true);
    }
 
}

CodekruTestSecond.java

package Test;
 
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
 
public class CodekruTestSecond {
 
    @AfterMethod
    public void afterMethod() {
        System.out.println("afterMethod in CodekruTestSecond class");
    }
 
    @Test
    public void testMethod1() {
        System.out.println("Executing the test1 in CodekruTestSecond class");
        Assert.assertTrue(true);
    }
 
    @Test
    public void testMethod2() {
        System.out.println("Executing the test2 in CodekruTestSecond class");
        Assert.assertTrue(true);
    }
 
}

现在,我们将使用下面的XML文件执行这两个类


    
        
            
            
        
    

XML文件的输出-

Executing the test1 in CodekruTestFirst class
afterMethod in CodekruTestFirst class
Executing the test2 in CodekruTestFirst class
afterMethod in CodekruTestFirst class
Executing the test1 in CodekruTestSecond class
afterMethod in CodekruTestSecond class
Executing the test2 in CodekruTestSecond class
afterMethod in CodekruTestSecond class

===============================================
codekru
Total tests run: 4, Passes: 4, Failures: 0, Skips: 0
===============================================
这里发生了什么

默认情况下,TestNG将按照XML文件中的顺序运行我们的测试。因此,它将选择CodekruTestFirst类并运行其第一个测试用例,然后是@AfterMethod注释的方法,然后再次运行第二个测试用例,然后是@AfterMethod注释的方法,依此类推,直到所有用例都被执行。
然后,它将选择CodekruTestSecond类并以相同的方式执行它。

现在,让我们来玩一点牛鬼蛇神

如果一个类中有两个带@AfterMethod注释的方法怎么办?他们两个会被处理吗?

了解这一点的最简单方法就是去做。所以,让我们在CodekruTestFirst类中再放一个带注释的方法。

package Test;
 
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
 
public class CodekruTestFirst {
 
    @AfterMethod
    public void afterMethod1() {
        System.out.println("afterMethod1 in CodekruTestFirst class");
    }
 
    @AfterMethod
    public void afterMethod2() {
        System.out.println("afterMethod2 in CodekruTestFirst class");
    }
     
    @Test
    public void testMethod1() {
        System.out.println("Executing the test1 in CodekruTestFirst class");
        Assert.assertTrue(true);
    }
 
    @Test
    public void testMethod2() {
        System.out.println("Executing the test2 in CodekruTestFirst class");
        Assert.assertTrue(true);
    }
 

下面是运行CodekruTestFirst类的XML文件。


    
        
            
        
    

XML文件的输出-

Executing the test1 in CodekruTestFirst class
afterMethod1 in CodekruTestFirst class
afterMethod2 in CodekruTestFirst class
Executing the test2 in CodekruTestFirst class
afterMethod1 in CodekruTestFirst class
afterMethod2 in CodekruTestFirst class

===============================================
codekru
Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
===============================================

在这里,我们可以看到两个@AfterMethod注释的方法都运行了。所以,如果你把一个或多个带注释的方法放在一个类中并不重要,它们都将在该类中的每个测试用例之后运行。

你可能感兴趣的:(java,unit,testing)