En Java pourquoi cette erreur: 'la valeur de l'attribut doit être constante'?
J'ai quelques TestNG code, où je suis passant un Test d'annotation paramètre appelé timeOut = TESTNG_TEST_TIMEOUT
.
@Test(description = "Tests something.", groups = { "regression" },
timeOut = TESTNG_TEST_TIMEOUT, enabled = true)
Et dans mon TestBase classe, j'ai ce membre:
public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5);
Lorsque j'utilise la ligne de code, j'obtiens une "valeur de l'attribut doit être constante' erreur dans Eclipse.
Mais, si j'ai simplement définir le membre comme ça, ça marche:
public final static long TESTNG_TEST_TIMEOUT = 300000;
Est l'utilisation de TimeUnit pas une constante?
Mais notez que vous pouvez probablement utilisation statique init bloc de contourner ce problème.
Ahh. Une idée intéressante. Merci.
Ahh. Une idée intéressante. Merci.
OriginalL'auteur djangofan | 2015-01-19
Vous devez vous connecter pour publier un commentaire.
Ce
est un constant variable, un type de expression constante.
Ce
ne l'est pas.
Annotation membres attendre expressions constantes (et quelques autres choses comme les énumérations et
Class
littéraux).Je voudrais aussi ajouter que le public final static long TESTNG_TEST_TIMEOUT = 50; est une constante variable, mais dans le public final static long TESTNG_TEST_TIMEOUT = 50 + 60; ne l'est pas.
En fait, il est.
Juste une pour info pour les autres,
public static final Long TESTING_TEST_TIMEOUT = 300000L;
est pas une valeur constante, l'utilisation de la primitivelong
au lieuOriginalL'auteur Sotirios Delimanolis