Automated tests 如何从@DataProvider获取@Before中@Test和@AfterMethod中@Test的参数值

Automated tests 如何从@DataProvider获取@Before中@Test和@AfterMethod中@Test的参数值,automated-tests,testng,dataprovider,testng-dataprovider,Automated Tests,Testng,Dataprovider,Testng Dataprovider,我想从TestNG中的@Test获取参数名及其值。这些参数由@DataProvider提供。通常,当我想并行运行测试时,我可以将它存储在类的变量中,这不是一个好主意。这是我的密码: import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotatio

我想从TestNG中的@Test获取参数名及其值。这些参数由@DataProvider提供。通常,当我想并行运行测试时,我可以将它存储在类的变量中,这不是一个好主意。这是我的密码:


import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class TestHomePage{

    @BeforeMethod(alwaysRun = true)
    public void setup(Method method) throws Exception {
        System.out.println("INFO ====setup===:" + method.getName());
        // how can I get parameters and value from @Test?
        //ex: sLogin="notLogin";sLike=""
    }

    @AfterMethod()
    public void tearnDown(Method method) {
        System.out.println("INFO ====tearnDown===:" + method.getName());
        // how can I get parameters and value from @Test?
    }

    @DataProvider(name = "likedata", parallel = true)
    public Object[][] likeDataprovider() throws Exception {
        return new Object[][] { { "notLogin", "" }, { "loggedIn", "notLike" }, { "loggedIn", "liked" } };
    }

    @Test(dataProvider = "likedata")
    public void verifyLikeFunction(String sLogin, String sLike, Method method) throws Exception {
        // Test
    }

}

有人能帮我吗


谢谢。

要获取值,请将
参数添加为
@beforethod

 @BeforeMethod(alwaysRun = true)
    public void setup(Method method, Object[] params) throws Exception {
        System.out.println("INFO ====setup===:" + method.getName());
        
        System.out.println("Parameter value:");
        for (Object parameter : params) {
            System.out.println(parameter);
        }      
    }
查看更多信息

要获取参数名

  @BeforeMethod(alwaysRun = true)
    public void setup(Method method, Object[] params) throws Exception {
        System.out.println("Before , INFO ====setup===:" + method.getName());
       
        Parameter[] parameters= method.getParameters();
        
        System.out.println("Parameter names:");
        for (Parameter parameter : parameters) {
            System.out.println(parameter.getName());
        }     
    }
如果编译期间包含调试信息,则可以获取参数名。有关更多详细信息,请参阅

简单地说, 如果您正在使用Eclipse,请转到项目->属性->Java编译器->检查“存储有关方法参数的信息(可通过反射使用)”


同样,我们可以在
@AfterMethod

中这样做。我尝试了与你所说的相同的方法,但在阅读你的答案之前。无论如何,谢谢