2009-06-10 16 views
16

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

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

मुझे पता है कि मैं बेस क्लास में एक खाली रनने योग्य विधि डाल सकता हूं, लेकिन मुझे उम्मीद थी कि किसी के पास बेहतर विचार होगा।

बेस वर्ग है:

@RunWith(SpringJUnit4ClassRunner.class) 
    @ContextConfiguration(locations = { 
      "classpath:spring-jndi.xml" 
    }) 
    @TestExecutionListeners({ 
      Log4JSetupListener.class, 
      JndiSetupListener.class, 
      DependencyInjectionTestExecutionListener.class, 
      DirtiesContextTestExecutionListener.class, 
      TransactionalTestExecutionListener.class 
    }) 
    public class SpringAppTestCase extends Assert implements ApplicationContextAware { 

     protected JndiTemplate jndiTemplate = new JndiTemplate(); 

     @Autowired 
     protected JdbcTemplate jdbcTemplate; 

     protected ApplicationContext applicationContext; 

     public void setApplicationContext(ApplicationContext ac) { 
      this.applicationContext = ac; 
     } 

    // 
    // @Test 
    // public void doit(){ 
    //  // this would prevent blow up but 
    // all subclass tests would run an extra method 
    // } 

     protected Logger log = Logger.getLogger(getClass().getName()); 

} 

त्रुटि:

java.lang.Exception: No runnable methods 
    at org.junit.internal.runners.MethodValidator.validateInstanceMethods(MethodValidator.java:32) 
    at org.junit.internal.runners.MethodValidator.validateMethodsForDefaultRunner(MethodValidator.java:43) 
    at org.junit.internal.runners.JUnit4ClassRunner.validate(JUnit4ClassRunner.java:36) 
    at org.junit.internal.runners.JUnit4ClassRunner.<init>(JUnit4ClassRunner.java:27) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:76) 
+0

असल में उपरोक्त कोड में परीक्षण नहीं हैं .... आपने यह टिप्पणी की है कि त्रुटि संदेश सही है? –

+0

हां, टिप्पणी कोड – gbegley

उत्तर

44

माता पिता वर्ग abstract बनाने या इसे इस तरह यह Test या TestCase में अंत नहीं है के रूप में नाम बदलें।

+1

धन्यवाद के अंदर टिप्पणी द्वारा समझाया गया धन्यवाद! मैंने अपनी कक्षा "टेस्ट" से शुरू की थी और इससे एक ही समस्या हुई। – tttppp

+0

भी धन्यवाद! मुझे लगभग एक ही समस्या थी, सिवाय इसके कि मेरे पास एक कक्षा थी जो कक्षा परीक्षण नहीं थी लेकिन टेस्ट से शुरू होने वाले नाम के साथ, और इससे एक ही त्रुटि संदेश हुआ। – bluttringer

+2

कक्षा के नाम से "टेस्ट" लेना मेरे लिए काम नहीं करता था। लेकिन "अमूर्त" जोड़ा। –

1

मुझे एक ही समस्या थी। मैं टेस्ट विधि के बिना परीक्षण कर रहा था।

@Test 
public void setupTest() { 
} 

उपरोक्त विधि ने इस मुद्दे को हल किया।

+0

यह रिक्त परीक्षण x संख्या बार चलाएगा क्योंकि किसी भी उप-वर्ग के उत्तराधिकारी (किसी भी कारण से)। स्वीकृत उत्तर 2 बेहतर विकल्प देता है। –

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