我可以通过@parameters注释为类中的变量赋值吗



这是我过去必须通过browser打开相应web驱动程序的代码。

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

只是想知道有没有办法给类中的变量赋值?不在方法中?例如

public class Test{
WebDriver driver;
@Parameters("browser")
public String browser = //"{browser}"; 
@Test
void test1(){
driver = help.getRemoteDriver(help.GRID,browser);
}
}

所以我可以在下一个新测试中调用这个Stringbrowser变量,而不使用@Parameters。甚至是它的儿童班。

提前谢谢。

对于定义的Parameters注释METHOD, CONSTRUCTOR, TYPE目标元素类型。

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

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

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

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>

Java注释ElementType常量是什么意思?

最新更新