2012-09-14 18 views
5

मैं पहली बार वसंत के साथ जूनिट टेस्ट सूट सेट करने की कोशिश कर रहा हूं और मेरी कक्षाओं में कुछ बदलावों के साथ प्रयास किया है, लेकिन कोई भाग्य नहीं है और इस त्रुटि के साथ समाप्त हुआ: "junit.framework.AssertionFailedError: नहीं MyClass "में पाया परीक्षणJUnit testuite त्रुटि के साथ SpringJUnit4ClassRunner

संक्षेप में, मैं 2 परीक्षण कक्षाएं दोनों एक ही आधार वर्ग से हैं जो

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = 
{ 
"classpath:ApplicationContext.xml" 
}) 

मैं नीचे के रूप में एक सूट में उन 2 परीक्षण वर्गों को जोड़ने की कोशिश की नीचे के रूप में वसंत संदर्भ लोड करता है

@RunWith(SpringJUnit4ClassRunner.class) 
@SuiteClasses({ OneTest.class, TwoTest.class }) 
public class MyTestSuite extends TestCase { 

//nothing here 
} 

मैं इस परीक्षण सूट को चींटी से चला रहा हूं। लेकिन, यह मुझे एक त्रुटि देता है "कोई परीक्षण नहीं मिला" हालांकि, अगर मैं व्यक्तिगत 2 परीक्षण मामलों को चींटी से चलाता हूं, तो वे ठीक से काम करते हैं। यकीन नहीं है कि यह व्यवहार क्यों है, मुझे यकीन है कि यहां कुछ याद आ रहा है। कृपया सलाह दें।

+0

क्या आप 'टेस्टकेस '(जो कि जूनिट 4 से पहले था) को विस्तारित करने के बजाय' @ टेस्ट 'एनोटेशन (जो कि जूनिट 4 के बाद परीक्षण विधियों को योग्यता प्राप्त करता है) के साथ प्रयास करना चाहते हैं? – Vikdor

+0

विक्टर, मैंने उन कक्षाओं में अपने सभी परीक्षण विधियों के लिए @ टेस्ट को एनोटेट किया। यह टेस्टकेस वर्ग I सूट के लिए बढ़ाया गया। – San

+0

क्षमा करें, मुझे नहीं पता था कि आप MyTestSuite को एक सूट बनना चाहते थे। परीक्षण सूट चलाने के लिए '@RunWith (Suite.class) 'का उपयोग करें। परीक्षण मामलों पर '@RunWith (SpringJunit4ClassRunner.class) की आवश्यकता है जहां आपको बीन्स इंजेक्शन प्राप्त करने की आवश्यकता है। – Vikdor

उत्तर

7

टिप्पणियों में उल्लिखित अनुसार, हम टेस्टसुइट को @RunWith(Suite.class) के साथ चलाते हैं और सभी परीक्षण मामलों को @SuiteClasses({}) के साथ सूचीबद्ध करते हैं। प्रत्येक परीक्षण मामले में @RunWith(SpringJunit4ClassRunner.class) और @ContextConfiguration(locations = {classpath:META-INF/spring.xml}) दोहराने के लिए, हम इस पर परिभाषित इन एनोटेशन के साथ एक सार टेस्टकेस बनाते हैं और सभी परीक्षण मामलों के लिए इस सारणी वर्ग का विस्तार करते हैं। एक नमूना नीचे पाया जा सकता है:

/** 
* An abstract test case with spring runner configuration, used by all test cases. 
*/ 
@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = 
{ "classpath:META-INF/spring.xml" }) 
public abstract class AbstractSampleTestCase 
{ 
} 


public class SampleTestOne extends AbstractSampleTestCase 
{ 
    @Resource 
    private SampleInterface sampleInterface; 

    @Test 
    public void test() 
    { 
     assertNotNull(sampleInterface); 
    } 

} 


public class SampleTestTwo extends AbstractSampleTestCase 
{ 
    @Resource 
    private SampleInterface sampleInterface; 

    @Test 
    public void test() 
    { 
     assertNotNull(sampleInterface); 
    } 

} 


@RunWith(Suite.class) 
@SuiteClasses(
{ SampleTestOne.class, SampleTestTwo.class }) 
public class SampleTestSuite 
{ 
} 

आप एक AbstractSampleTest नहीं करना चाहते हैं, तो आप प्रत्येक परीक्षण मामले पर वसंत धावक एनोटेशन को दोहराने के लिए, की जरूरत है जब तक वसंत एक SpringJunitSuiteRunner कि वे किस तरह के समान के साथ आता है SpringJunitParameterizedRunner जोड़ने की आवश्यकता है।

+0

वही बात थी जो मैंने शुरू में की थी, मैंने अपने पहले कोड ब्लॉक पर इसका उल्लेख किया था बेस क्लास के लिए। एकमात्र चीज जिसे मैं याद कर रहा था वह बेस क्लास के लिए सार है, जिसे मैंने अभी जोड़ा है। लेकिन, अभी भी नीचे त्रुटि देख रहे हैं। "java.lang.NoClassDefFoundError: जूनिट/फ्रेमवर्क/टेस्ट" यह क्लासपाथ से संबंधित कुछ है। लेकिन मेरा जूनिट टास्क क्लासपाथ जार जूनिट 4.8 दिखा रहा है। क्या मुझे कुछ याद आ रहा है या मेरा क्लासपाथ गलत है? – San

+0

एनोटेशन 'टेस्ट' को' org.junit.Test' को हल करना चाहिए। सुनिश्चित नहीं है कि यह आपके मामले में 'junit.framework.Test' क्यों है। क्या आप तदनुसार आयात बदल सकते हैं? – Vikdor