2012-01-17 13 views
10

मैंने maven-surefire-plugin and default locale में पढ़ा है कि मैवेन परीक्षणों को चलाता है और इस प्रकार आपके द्वारा सेट किए गए किसी भी लोकेल को खो सकता है।मैवेन पोम फ़ाइल में सुनिश्चित करें प्लगइन लोकेल

फोर्क मोड में मेवेन में परीक्षण चलाने का कोई तरीका है और अभी भी लोकेल बनाए रखा है?

- संपादित करें -

तो, थोड़ा स्पष्ट करने के लिए: यह का उपयोग कर सिस्टम गुण में भाषा और क्षेत्र स्थापित करने के लिए पूरी तरह से संभव है:

<systemPropertyVariables> 
    <user.language>en</user.language> 
    <user.region>GB</user.region> 
</systemPropertyVariables> 

और वे वास्तव में चल रहा है की प्रक्रिया के लिए पारित कर रहे हैं । हालांकि यह तदनुसार लोकेल सेट नहीं करता है; लोकेल सिस्टम डिफ़ॉल्ट के रूप में बनी हुई है।

+0

आप '' user.region' के बजाय user.country' स्थापित करने की कोशिश की है: और यह आप नीचे की तरह एक प्रोफाइल जो डिफ़ॉल्ट रूप से सक्रिय हो जाएगा जोड़ने करना है? –

+0

देश स्थापित करना काम नहीं करता है। यह इसे सिस्टम प्रॉपर्टी के रूप में ठीक करता है, किसी भी तरह से लोकेल को प्रभावित नहीं करता है। – JHollanti

+0

सूर्य के दस्तावेज़ीकरण [1] राज्य: "दूसरा, कुछ जावा रनटाइम कार्यान्वयन पर, उपयोगकर्ता उपयोगकर्ता उपयोगकर्ता की भाषा को स्थापित करके कमांड लाइन पर यह जानकारी प्रदान करके मेजबान के डिफ़ॉल्ट लोकेल को ओवरराइड कर सकता है। भाषा, उपयोगकर्ता.country, और उपयोगकर्ता। संस्करण प्रणाली गुण। " तो, आप किस जेवीएम का उपयोग कर रहे हैं? [1] http://java.sun.com/developer/technicalArticles/J2SE/locale/ –

उत्तर

2

मैं इस परीक्षण करने के लिए एक तरीका मौजूद नहीं है, लेकिन इसे आजमाइए:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <project> 
      <properties> 
       <user.language>en</user.language> 
       <user.region>GB</user.region> 
      </properties> 
     </project> 
     <includes> 
      <include>**/*Test.java</include> 
     </includes> 
     <forkMode>pertest</forkMode> 
    </configuration> 
</plugin> 

संपादित करें: ठीक है इस प्रयास करें:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <systemPropertyVariables> 
      <user.language>en</user.language> 
      <user.region>GB</user.region> 
     </systemPropertyVariables> 
     <includes> 
      <include>**/*Test.java</include> 
     </includes> 
     <forkMode>pertest</forkMode> 
    </configuration> 
</plugin> 
+0

नहीं, काम नहीं करता है। सिस्टम गुण भी सेट नहीं करता है। – JHollanti

+0

ठीक है, नई कॉन्फ़िगरेशन –

+0

पोस्ट किया गया यह एक सिस्टम प्रॉपर्टी को ठीक ठीक करता है। लोकेल डिफ़ॉल्ट रहता है। हालांकि प्रयास के लिए धन्यवाद। – JHollanti

2

अपने आवेदन के डिफ़ॉल्ट स्थान है तीन तरीकों से निर्धारित है। पहले, जब तक आप स्पष्ट डिफ़ॉल्ट बदल दिया है, getDefault() विधि वातावरण है कि शुरू में जावा वर्चुअल मशीन (JVM) जब वह पहली बार लोड द्वारा निर्धारित किया गया था देता है। यही है, JVM होस्ट वातावरण से डिफ़ॉल्ट लोकेल निर्धारित करता है। होस्ट पर्यावरण का लोकेल मेजबान ऑपरेटिंग सिस्टम और उस सिस्टम पर स्थापित उपयोगकर्ता प्राथमिकताओं द्वारा निर्धारित किया जाता है।

दूसरा, कुछ जावा रनटाइम कार्यान्वयन पर, आवेदन उपयोगकर्ता user.language, user.country की स्थापना द्वारा आदेश पंक्ति पर यह जानकारी उपलब्ध कराने के द्वारा मेजबान के डिफ़ॉल्ट स्थान ओवरराइड कर सकते हैं, और user.variant प्रणाली गुण। [Source]

मुझे लगता है कि आप पहले भाग का शिकार होते हैं, इसलिए दूसरा एक मौका हो जाता है कभी नहीं।

इसके बजाय, आप क्या कर सकते अपनी इकाई परीक्षण में है (या शायद एक आधार वर्ग क्या है) प्रोग्राम के रूप में एक ही पाठ में बाद में कहा डिफ़ॉल्ट स्थान सेट करें:

तीसरा, अपने आवेदन setDefault(Locale aLocale) कॉल कर सकते हैं विधि। setDefault(Locale aLocale) विधि आपके एप्लिकेशन को सिस्टमव्यापी संसाधन सेट करने देता है। इस विधि के साथ डिफ़ॉल्ट लोकेल सेट करने के बाद, Locale.getDefault() पर आने वाली कॉल नए सेट लोकेल लौटाएंगी।

static{ 
     Locale.setDefault(Locale.UK); 
} 
+0

हाँ, यह निश्चित रूप से काम करेगा। एकमात्र समस्या यह है कि मेरे पास बड़ी संख्या में परीक्षण हैं। और, भविष्य में कोई भी, और निश्चित रूप से, निश्चित रूप से लोकेल को प्रोग्रामेटिक रूप से सेट किए बिना यूनिट परीक्षण लिख सकता है। – JHollanti

12

इस प्रयास करें:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <argLine>-Duser.language=en -Duser.region=GB</argLine> 
     </configuration> 
    </plugin> 
+0

इसने मेरे लिए समस्या हल की। धन्यवाद! – sebadagostino

0

मैं एक ही मुद्दा था, लेकिन मैंने pom.xml फाइल करने के लिए ingerence बिना यह को हल करने के लिए किया था।यह मेवेन की वैश्विक विन्यास फाइल के माध्यम से संभव है (आमतौर पर ~/.m2/settings.xml पर स्थित)।

<?xml version="1.0" encoding="UTF-8"?> 
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
     http://maven.apache.org/xsd/settings-1.0.0.xsd"> 

    ... 

    <profiles> 
     <profile>  
      <id>my-prof</id> 
      <properties> 
       <argLine>-Duser.language=en -Duser.region=GB</argLine> 
      </properties>    
     </profile> 
    </profiles> 

    <activeProfiles> 
     <activeProfile>my-prof</activeProfile> 
    </activeProfiles> 

    ... 

</settings> 
संबंधित मुद्दे