2015-01-19 6 views
10

मेरे पास कुछ टेस्टएनजी कोड है, जहां मैं timeOut = TESTNG_TEST_TIMEOUT नामक टेस्ट एनोटेशन पैरामीटर पास कर रहा हूं।जावा में यह त्रुटि क्यों है: 'विशेषता मान स्थिर होना चाहिए'?

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

जब मैं कोड के ऊपर लाइन का उपयोग करें, मैं एक ग्रहण में त्रुटि 'विशेषता मान निरंतर होना चाहिए':

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

और मेरे TestBase कक्षा में मैं इस सदस्य है।

लेकिन, अगर मैं बस इतना की तरह सदस्य परिभाषित करते हैं, यह काम करता है:

public final static long TESTNG_TEST_TIMEOUT = 300000; 

TIMEUNIT के उपयोग नहीं एक निरंतर है?

+1

लेकिन ध्यान दें कि आप * समस्या * इस समस्या को रोकने के लिए एक स्थिर इनिट ब्लॉक का उपयोग कर सकते हैं। –

+0

आह। दिलचस्प विचार धन्यवाद। – djangofan

उत्तर

19

यह

public final static long TESTNG_TEST_TIMEOUT = 300000; 

एक constant variable, constant expression का एक प्रकार है।

यह

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

नहीं है।

एनोटेशन सदस्य expect निरंतर अभिव्यक्तियां (और कुछ अन्य चीजें जैसे enums और Class अक्षर)।

+3

हाइपरलिंक्स के लिए धन्यवाद। मैं देख सकता हूं कि डॉक्टर कहते हैं कि निरंतर एक आदिम या पूर्ववर्ती स्ट्रिंग होना चाहिए। धन्यवाद। – djangofan

+0

मैं उस सार्वजनिक अंतिम स्थिर लंबे TESTNG_TEST_TIMEOUT = 50 भी जोड़ूंगा; एक निरंतर परिवर्तनीय है, लेकिन सार्वजनिक अंतिम स्थैतिक लंबा TESTNG_TEST_TIMEOUT = 50 + 60; नहीं है। – javadev

+0

@ जावा वास्तव में, यह है। –

संबंधित मुद्दे