希望修改注解的参数值,默认是常量值
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = {"pretty",
"json:target/cucumber-report/json-files/cucumber.json",
"html:target/cucumber-report/cucumber.html"},
features = "src/test/resources/features",
glue = {"com.steps","com.hooks"},
tags = "@test1"
)
public class CucumberTest {
@Before
public static void b() throws Exception{
System.out.println("bbbbbbbbbbbbbbbbbbbbbb");
}
@BeforeClass
public static void a() throws Exception{
Class c = Class.forName("com.run.CucumberTest");
Annotation cucumberOptions = c.getAnnotations()[1];
InvocationHandler invocationHandler = Proxy.getInvocationHandler(cucumberOptions);
Field memberValuesField = invocationHandler.getClass().getDeclaredField("memberValues");
// 打开访问权限
memberValuesField.setAccessible(true);
// 获取 memberValues (目标注解的信息都在 memberValues 中)
LinkedHashMap<String,String> memberValues = (LinkedHashMap) memberValuesField.get(invocationHandler);
System.out.println("修改前tags:" + memberValues.get("tags"));
for(Map.Entry<String,String> entry:memberValues.entrySet()){
if (entry.getKey().equals("tags")){
System.out.println("修改中:" + entry);
entry.setValue("@test1");
}
}
memberValues.put("tags","@test1 or @test2");
System.out.println("修改后tags:" + memberValues.get("tags"));
c.newInstance();
System.out.println("xxxxxxxxxxxxxxxxxx");
}
}
可以正常运行runwith类注解 但修改的tags值没有生效
麻烦给出建议
@BeforeClass 为启动本测试类前执行
cucumber tags为自动化测试标记 可以自己通过配置文件或程序处理得到一个 值