我可以通过@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?
这是我以前必须通过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?