मैं स्प्रिंग बूट के लिए नया हूं और यह समझने की कोशिश कर रहा हूं कि स्प्रिंगबूट में परीक्षण कैसे काम करता है। मैं थोड़ा उलझन में हूँ कि निम्नलिखित दो कोड स्निपेट में क्या अंतर है:
कोड स्निपेट 1:
@RunWith(SpringRunner.class)
@WebMvcTest(HelloController.class)
public class HelloControllerApplicationTest {
@Autowired
private MockMvc mvc;
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Greetings from Spring Boot!")));
}
}
यह परीक्षण @WebMvcTest
एनोटेशन का उपयोग करता है, जो मुझे लगता है कि फीचर स्लाइस परीक्षण के लिए है और केवल एक वेब एप्लिकेशन के एमवीसी परत का परीक्षण करता है।
कोड स्निपेट 2:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Greetings from Spring Boot!")));
}
}
यह परीक्षण @SpringBootTest
एनोटेशन और ए का उपयोग करता है MockMvc
। तो यह कोड स्निपेट 1 से कैसे अलग है? यह अलग तरीके से क्या करता है?
संपादित करें: कोड स्निपेट 3 जोड़ना (इसे स्प्रिंग प्रलेखन में एकीकरण परीक्षण के उदाहरण के रूप में पाया गया)
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class HelloControllerIT {
@LocalServerPort private int port;
private URL base;
@Autowired private TestRestTemplate template;
@Before public void setUp() throws Exception {
this.base = new URL("http://localhost:" + port + "/");
}
@Test public void getHello() throws Exception {
ResponseEntity < String > response = template.getForEntity(base.toString(), String.class);
assertThat(response.getBody(), equalTo("Greetings from Spring Boot!"));
}
}