J'ai du code TestNG, où je passe un paramètre d'annotation de test appelé timeOut = TESTNG_TEST_TIMEOUT
.
@Test(description = "Tests something.", groups = { "regression" },
timeOut = TESTNG_TEST_TIMEOUT, enabled = true)
Et dans ma classe TestBase, j'ai ce membre:
public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5);
Lorsque j'utilise la ligne de code ci-dessus, j'obtiens une erreur "la valeur d'attribut doit être constante" dans Eclipse.
Mais, si je définis simplement le membre ainsi, cela fonctionne:
public final static long TESTNG_TEST_TIMEOUT = 300000;
L'utilisation de TimeUnit n'est-elle pas une constante?
Ce
public final static long TESTNG_TEST_TIMEOUT = 300000;
est un variable constante , un type de expression constante .
Ce
public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5);
n'est pas.
Membres d'annotation attendre expressions constantes (et quelques autres choses comme des énumérations et des littéraux Class
).