information - scientific name of ant




मैं एक चींटी कार्य के लिए एक तर्क कैसे पास करूं? (6)

अपने परीक्षण लक्ष्य में कुछ सशर्त का उपयोग करने और निर्दिष्ट करने के बारे में क्या -Dcondition=true ?

<target name="test" depends="_test, _test_if_true>
   ...
</target> 

<target name="_test_if_true" if="condition">
   ...
</target>

<target name="_test" unless="condition">
   ...
</target>

चींटी faq से थोड़ा अनुकूलित।

मैं चींटी के साथ बहुत अच्छा नहीं हूं, लेकिन हम इसे एक निर्माण उपकरण के रूप में उपयोग कर रहे हैं। अभी, हम "चींटी परीक्षण" चला सकते हैं और यह सभी इकाई परीक्षणों के माध्यम से चलेगा।

हालाँकि, मैं ant test some_module तरह कुछ करने में सक्षम होना पसंद ant test some_module और यह पैरामीटर के रूप में some_module स्वीकार कर some_module , और केवल वही परीक्षण करेगा।

मैं कैसे कमांड लाइन पास करने के लिए नहीं मिल पा रहा है चींटी - किसी भी विचार?


आप एक वैकल्पिक डिफ़ॉल्ट मान वाली संपत्ति को भी परिभाषित कर सकते हैं जिसे कमांड लाइन के माध्यम से प्रतिस्थापित किया जा सकता है, जैसे

<target name="test">
  <property name="moduleName" value="default-module" />
  <echo message="Testing Module: ${moduleName}"/>
  ....
</target>

और इसे चलाएं:

ant test -DmoduleName=ModuleX

एक समाधान इस प्रकार हो सकता है। (मेरे पास एक परियोजना है जो ऐसा करती है।)

एक fileset साथ test करने के लिए एक अलग लक्ष्य है जो केवल एक कक्षा के लिए परीक्षण को प्रतिबंधित करता है। फिर चींटी कमांड लाइन पर उस क्लास का नाम -D पास करें:

ant -Dtest.module=MyClassUnderTest single_test

बिल्ड.xml (अत्यधिक कम) में:

<target name="single_test" depends="compile" description="Run one unit test">
    <junit>
        <batchtest>
            <fileset dir="${test.dir}" includes="**/${test.module}.class" />
        </batchtest>
    </junit>
</target>

ऐसा न हो कि आपके प्रोजेक्ट में दो मॉड्यूल हैं ModuleX और ModuleY जहां ModuleX को चलाने के लिए 2 Testcases हैं और 10 Testcases के साथ ModuleY हैं।

आप ऐसा कुछ कर सकते हैं:

ant runTestsOnModule -Dtestmodule="ModuleX" 
       OR to test all modules by calling 
ant tests

<target name="runTestsOnModule">
  <antCall target="testcase${testmodule}"/>
</target>'

<! -- run single module -->
<target name="runTestsOnModule">
  <antCall target="testcase${testmodule}"/>
</target>

<!--run all tests-->    
<target name="tests">
   <antcall target="testcaseModuleX">
   <antcall target="testCaseModuleY">
</target>

<target name="testcaseModuleX">
   ..run junit task to call 2 testcase
</target>

<target name="testcaseModuleY">
  ....run junit task to call 10 testcase
</target>

चींटी वास्तव में बिल्ड फ़ाइल के लिए पैरामीटर_ नहीं है। मैं ऐसा करने के लिए कुछ तरीके सोच सकता हूं:

परीक्षणों को निर्दिष्ट करने के लिए एक विशेष लक्ष्य का उपयोग करें। आप कई परीक्षणों को निर्दिष्ट करने की अनुमति देने के लिए AntContrib से <for/> कार्य का उपयोग कर सकते हैं। आपको Ant-Contrib jar फ़ाइल डाउनलोड करनी होगी। मैं `$ {अण्डरग्राउंड / एंटीलिब / एंटीकंट्रिब" ​​डायरेक्टरी के तहत इसे अपने प्रोजेक्ट के अंदर रखने की सलाह देता हूँ। इस तरह, जब दूसरे आपके प्रोजेक्ट को चेक करते हैं, तो उन्हें आवश्यक एंट-कंट्रीब जार फ़ाइल मिलती है।

<property name="antlib.dir"     value="${basedir}/antlib"/>
<property name="antcontrib.dir" value="${antlib}/antcontrib"/>

<!-- Set up the ant contrib tasks for your use -->
<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
        <fileset dir="${antcontrib.dir}"/>
    </classpath>
</taskdef>

<target name="select-test"
    description="Select the tests to run"
    depends="test-compile"
    if="junit-tests">
       <for parameter="module" 
          list="${junit-tests}"
          delimiter=" ">
          <sequential>
              <junit
                 fork="true"
                 ...>
                 <batchtest todir="$target/unit-tests">
                 <fileset dir="${test.destdir}">
                    <include name="**/@{module}.class"/>
                 </fileset>
             </junit>
         </sequential>
      </for>
</target>

अब आप इस तरह कई परीक्षण चलाते हैं:

$ ant -D"test-one test-two test-three" select-test

तर्कों के लिए, संपत्ति कहा जाता है। आपको संपत्ति सेट करने की आवश्यकता है। जैसे ANT सादा तर्क में लक्ष्य नाम के रूप में लिया जाता है।