在Java中为什么会出现这个错误:“属性值必须是常量”?

2022-09-01 15:38:45

我有一些TestNG代码,我正在传递一个名为的测试注释参数。timeOut = TESTNG_TEST_TIMEOUT

@Test(description = "Tests something.", groups = { "regression" }, 
   timeOut = TESTNG_TEST_TIMEOUT, enabled = true)

在我的TestBase类中,我有这个成员:

public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5);

当我使用上面的代码行时,我在Eclipse中得到了一个“属性值必须是常量”的错误。

但是,如果我简单地这样定义成员,它的工作原理是:

public final static long TESTNG_TEST_TIMEOUT = 300000;

TimeUnit的使用不是一个常量吗?


答案 1

public final static long TESTNG_TEST_TIMEOUT = 300000;

是一个常量变量,一种常量表达式

public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5);

莫。

批注成员需要常量表达式(以及其他一些内容,如枚举和文本)。Class


答案 2

推荐