web-dev-qa-db-ja.com

Javaこのエラーの理由:「属性値は定数でなければなりません」?

いくつかのTestNGコードがあり、timeOut = TESTNG_TEST_TIMEOUTというTest注釈パラメーターを渡します。

@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の使用は定数ではありませんか?

17
djangofan

この

public final static long TESTNG_TEST_TIMEOUT = 300000;

定数変数定数式 のタイプです。

この

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

ではありません。

アノテーションメンバー expect 定数式(およびenumやClassリテラルなどの他のいくつかの要素)。

24