2008-11-10 18 views
8

हम अपने सूट में जूनिट परीक्षण कैसे प्राप्त कर सकते हैं जो चलाने के लिए सबसे अधिक समय लेता है? जूनिट्रेपोर्ट चींटी कार्य का डिफ़ॉल्ट आउटपुट सहायक होता है, लेकिन हमारे सुइट में कई छोटे स्वीट्स में हजारों परीक्षण आयोजित किए जाते हैं, इसलिए यह थकाऊ हो जाता है, और सबसे खराब अपराधी हमेशा बदल रहे होते हैं।सबसे लंबे समय तक चलने वाले यूनिट परीक्षण?

हम लंटबिल्ड का उपयोग करते हैं लेकिन आदर्श रूप से यह कुछ ऐसा होगा जो हम केवल चींटी से चला सकते हैं।

+0

बस ब्याज से बाहर, आप क्यों जानना चाहते हैं? मेरे सबसे उपयोगी jUnit परीक्षणों में से एक लंबा समय लगता है - क्योंकि कोड अक्षम नहीं है, लेकिन क्योंकि यह शर्तों के एक बहुत ही पूर्ण सेट (तीन के लिए() लूप गहरे) के साथ परीक्षण करता है – slim

+0

हमारे पास बहुत खराब लिखित परीक्षण हैं। कुछ बहुत अनावश्यक सेट-अप करते हैं। कुछ परीक्षण Thread.sleep() का उपयोग करते हैं। कुछ को चलाने के लिए वास्तव में एक लंबा समय चाहिए। हमारे सुइट को चलाने के लिए आधे घंटे लगते हैं और मैं इसे तेज करने के लिए आसान लक्ष्य ढूंढ रहा हूं। –

उत्तर

11

JUnitReport जुनीट कार्य द्वारा उत्पादित एक्सएमएल फाइलों पर काम करता है। आप एक ऐसा कार्य लिख सकते हैं जो एक ही एक्सएमएल फाइलों (टेस्ट - *। एक्सएमएल) से परीक्षण अवधि को पढ़ेगा। लेकिन आप शॉर्टकट भी ले सकते हैं और JUnitReport (TESTS-TestSuites.xml) द्वारा बनाई गई सारांश फ़ाइल को पढ़ सकते हैं जिसमें एक ही फ़ाइल में सभी जानकारी है।

यह करने के लिए एक त्वरित तरीका XSL का एक सा उपयोग करने के लिए बस धीमी परीक्षणों से पता चलता है:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text"/> 

    <xsl:template match="/"> 
    <xsl:text> </xsl:text> 
    <xsl:for-each select="testsuites/testsuite"> 
    <xsl:sort select="@time" data-type="number" order="descending" /> 
     <xsl:value-of select="@name"/> : <xsl:value-of select="@time"/> 
     <xsl:text> 
    </xsl:text> 
    </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

चींटी से चलाने के लिए आप यह करते हैं:

<target name="show.slow.tests"> 
    <xslt in="target/tests-results/TESTS-TestSuites.xml" out="target/slow.txt" style="slow.xsl"/> 
</target> 

तो फिर तुम सिर्फ कर सकते हैं पहले एक्स लाइनों को देखो एक्स धीमी परीक्षण लगता है:

jfredrick $ सिर लक्ष्य/slow.txt

    ForcingBuildShouldNotLockProjectInQueuedStateTest: 11.581
    CruiseControlControllerTest: 7.335
    AntBuilderTest: 6.512
    Maven2BuilderTest: 4.412
    CompositeBuilderTest: 2.222
    ModificationSetTest: 2.05
    NantBuilderTest: 2.04
    CruiseControlConfigTest: 1.747
    ProjectTest: 1.743
    BuildLoopMonitorTest: 0.913
2

TeamCity का उपयोग करें। उनके पास बहुत अच्छी रिपोर्ट है, और संस्करण 4.0 आपके परीक्षणों को भी ऑर्डर करता है ताकि सबसे अधिक चंचल परीक्षण पहले चल सकें।

1

यदि आप क्रूज़ नियंत्रण का उपयोग करके अपने बिल्ड सर्वर पर अपने परीक्षण लॉन्च करते हैं, तो यह रन टाइम द्वारा क्रमबद्ध करने के लिए शीर्ष स्तर विकल्पों में से एक है।

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