我可以通过@parameters注解给class中的变量赋值吗?

Can I assign a value to a variable in class by @parameters annotation?

这是我以前必须通过browser打开其相应网络驱动程序的代码。

@BeforeClass
@Parameters("browser")
public void openDriver(String browser) throws Exception {
    driver = help.getRemoteDriver(help.GRID,browser);
.....

只是想知道有没有什么方法可以为 class 中的变量赋值?不在方法中?例如。

public class Test{
   WebDriver driver;

   @Parameters("browser")
   public String browser = //"{browser}"; 

   @Test
   void test1(){
      driver = help.getRemoteDriver(help.GRID,browser);
   }

}

所以我可以在下一个新测试中调用这个不带 @Parameters 的字符串 browser 变量。甚至它的 child class.

提前致谢。

对于 Parameters 注释 METHOD, CONSTRUCTOR, TYPE 目标 ElementTypes 已定义。

@Retention(RUNTIME)
@Target({METHOD, CONSTRUCTOR, TYPE})
public @interface Parameters {|
...

目标中没有 FIELD,因此 无法为 class 字段设置此注释

但您也可以在构造函数中设置它。

public class MyTest {

   WebDriver driver;

   public String browser;

   @Parameters({ "browser" })
   public MyTest(String browser) {
       this.browser = browser;
   }

   @Test
   void test1(){
      driver = help.getRemoteDriver(help.GRID,browser);
   }

}

testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="suite-name">
    <test name="test-name">
        <parameter name="browser" value="chrome"/>
        <classes>
            <class name="my.package.name.MyTest"/>
        </classes>
    </test>
</suite>

What do Java annotation ElementType constants mean?