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

时间:2015-01-19 19:04:14

标签: java annotations testng constants

我有一些TestNG代码,我传递一个名为timeOut = TESTNG_TEST_TIMEOUT的Test annotation参数。

@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 个答案:

答案 0 :(得分:21)

public final static long TESTNG_TEST_TIMEOUT = 300000;

constant variable,类型为constant expression

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

不是。

注释成员expect常量表达式(以及其他一些内容,如枚举和Class文字)。