我正在尝试使用@Optional注释将对象pathToJsonFileAppCreate作为可选参数传递。
public static final String pathToJsonFileAppCreate = fprUploadBundle.getString("pathToJsonFile");
@Parameters({"pathToJsonFileAppCreate"})
@BeforeSuite
public void SuiteSetup(@Optional(pathToJsonFileAppCreate) String pathToJsonFileAppCreate) {
尽管对象应该是常量(请参见声明),但仍然出现错误:“元素值必须是常量表达式” 基本上,我试图从属性文件(如果在xml中未定义任何参数值)或xml文件中加载值。
答案 0 :(得分:0)
注释在编译时进行评估。您说的是object should be constant
,但事实并非如此
pathToJsonFileAppCreate = fprUploadBundle.getString("pathToJsonFile");
编译器不知道在运行时将返回什么。 如果您认为该值是常数,则将该常数放在此处。
从理论上讲,您可以在运行时修改值(https://www.baeldung.com/java-reflection-change-annotation-params),但必须确保在使用这些批注的任何操作尚未运行之前就进行了修改。
无论如何,您似乎滥用了注释。注释来自什么库?