2015-01-19 9 views
10

Ho un codice TestNG, dove sto passando un parametro di annotazione Test chiamato timeOut = TESTNG_TEST_TIMEOUT.In Java perché questo errore: 'il valore dell'attributo deve essere costante'?

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

E nella mia classe TestBase ho questo membro:

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

Quando uso la riga di codice precedente, ho un 'valore di attributo deve essere costante' errore in Eclipse.

Ma, se ho semplicemente definire il membro in questo modo, funziona:

public final static long TESTNG_TEST_TIMEOUT = 300000; 

È l'uso di TIMEUNIT non è una costante?

+1

Tuttavia, è possibile * probabilmente * utilizzare un blocco di init statico per aggirare questo problema. –

+0

Ahh. Pensiero interessante Grazie. – djangofan

risposta

19

Questo

public final static long TESTNG_TEST_TIMEOUT = 300000; 

è un constant variable, un tipo di constant expression.

Questo

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

non è.

Membri di annotazione expect espressioni costanti (e alcune altre cose come enumerazioni e letterali Class).

+3

Grazie per i collegamenti ipertestuali. Vedo che il documento dice che una costante deve essere una stringa primitiva o predeterminata. Grazie. – djangofan

+0

Vorrei anche aggiungere che public final static long TESTNG_TEST_TIMEOUT = 50; è una variabile costante, ma public final static long TESTNG_TEST_TIMEOUT = 50 + 60; non è. – javadev

+0

@java In realtà, lo è. –

Problemi correlati