2017-10-09 14 views
5

मेरे पास spring-boot एप्लिकेशन है जहां मेरा @SpringBootApplication स्टार्टर क्लास मानक की तरह दिखता है। इसलिए मैंने अपनी सभी कार्यक्षमताओं के लिए कई परीक्षण किए और मेरा कवरेज देखने के लिए सारांश को sonarqube पर भेजें।स्प्रिंग-बूट एप्लिकेशन के मुख्य वर्ग का परीक्षण कैसे करें

मेरे स्टार्टर क्लास सोनारक्बे के लिए मुझे बताता है कि मेरे पास 60% कवरेज है। तो औसत कवरेज अपेक्षित के रूप में अच्छा नहीं है।

enter image description here

मेरे टेस्ट वर्ग बस डिफ़ॉल्ट से एक है।

@RunWith(SpringRunner.class) 
@SpringBootTest(classes = ElectronicGiftcardServiceApplication.class) 
public class ElectronicGiftcardServiceApplicationTests { 

    @Test 
    public void contextLoads() { 
    } 
} 

तो मैं अपने आवेदन के स्टार्टर क्लास में अपनी मुख्य कक्षा का परीक्षण कैसे कर सकता हूं?

+0

आप मॉकिटो का उपयोग करके 'वसंत अनुप्रयोग' कक्षा का नकल कर सकते हैं और सत्यापित कर सकते हैं कि जब आप मुख्य 'विधि' निष्पादित कर रहे हैं तो सही तर्कों के साथ इसे बुलाया गया है –

उत्तर

4

आप इस

@Test 
public void applicationContextLoaded() { 
} 

@Test 
public void applicationContextTest() { 
    mainApp.main(new String[] {}); 
} 
4

मैं एक ही लक्ष्य (एक परीक्षण है कि main() प्रणाली चलाता वाले) था की तरह कुछ कर सकते हैं और मैंने देखा है बस @ fg78nc की तरह एक परीक्षण विधि जोड़ने का कहना है कि वास्तव में इच्छा एप्लिकेशन को दो बार "शुरू करें": वसंत बूट परीक्षण ढांचे के द्वारा, एक बार mainApp.main(new String[] {}) के स्पष्ट आमंत्रण के माध्यम से, जो मुझे सुरुचिपूर्ण नहीं लगता है।

मैं दो परीक्षण वर्गों लेखन समाप्त हो गया: @SpringBootTest टिप्पणी के साथ एक और खाली परीक्षा पद्धति applicationContextLoaded(), बिना @SpringBootTest (केवल RunWith(SpringRunner.class)) एक और एक है कि मुख्य प्रणाली को बुलाती है।

SpringBootApplicationTest

package example; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.test.context.junit4.SpringRunner; 

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class SpringBootApplicationTest { 

    @Test 
    public void contextLoads() { 
    } 
} 

ApplicationStartTest

package example; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.test.context.junit4.SpringRunner; 

@RunWith(SpringRunner.class) 
public class ApplicationStartTest { 
    @Test 
    public void applicationStarts() { 
    ExampleApplication.main(new String[] {}); 
    } 
} 

कुल मिलाकर, आवेदन अभी भी दो बार शुरू कर दिया है, लेकिन क्योंकि वहाँ अब दो परीक्षण वर्गों है। बेशक, केवल इन दो परीक्षण विधियों के साथ, यह ओवरकिल लगता है, लेकिन आम तौर पर SpringBootApplicationTest कक्षा @SpringBootTest सेटअप का लाभ लेते हुए अधिक परीक्षण जोड़े जाएंगे।

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