Test-Specific Configuration
@TestConfiguration ek SEPARATE @Configuration CLASS DEFINE karne deता hai JO SIRF TESTS mein ACTIVE hoती hai — MAIN application configuration ko IMPACT kiye BINA. COMMON USE-CASE: EXTERNAL SERVICES (payment gateways, email providers) ke MOCK/FAKE VERSIONS PROVIDE karna, taaki TESTS REAL, EXTERNAL systems ko HIT NA karein.
SPRING TEST FRAMEWORK ek IMPORTANT OPTIMIZATION bhi karta hai — APPLICATION CONTEXT CACHING. AGAR MULTIPLE test classes SAME configuration use karte hain, Spring context EK BAAR CREATE hota hai, aur SAARI TEST CLASSES ke BEECH REUSE hota hai — TEST SUITE ki SPEED SIGNIFICANTLY IMPROVE hoती hai.
@TestConfiguration
public class TestConfig {
@Bean
@Primary
public PaymentGateway mockPaymentGateway() {
return new FakePaymentGateway(); // REAL Stripe API kabhi CALL NAHI hoगा
}
}
@SpringBootTest
@Import(TestConfig.class)
class OrderServiceIntegrationTest {
@Autowired
private PaymentGateway paymentGateway; // FakePaymentGateway inject hoगi
@Test
void shouldPlaceOrderWithoutRealPayment() {
// Test REAL payment provider ko KABHI TOUCH NAHI karता
}
}- @TestConfiguration = test-only beans (mocks, fakes) — real config IMPACT nahi
- Common use-case: external services (payment, email) ke FAKE versions
- Context caching = SAME config, MULTIPLE test classes ke beech REUSE, FASTER suite
@TestConfiguration se, EK SEPARATE CONFIGURATION CLASS DEFINE ki ja sakti hai JO SIRF TESTS mein USE hoती hai (jaise EK MOCK EXTERNAL API CLIENT) — MAIN application CONFIGURATION ko IMPACT kiye BINA.
@TestConfiguration
public class TestConfig {
@Bean
@Primary
public PaymentGateway mockPaymentGateway() {
return new FakePaymentGateway(); // REAL Stripe API NAHI CALL hoगा tests mein
}
}Spring Test FRAMEWORK, APPLICATION CONTEXT ko CACHE karta hai TEST CLASSES ke BEECH — AGAR MULTIPLE test classes, SAME configuration use karte hain, Spring context EK BAAR hi CREATE hota hai, REUSE hota hai — TEST SUITE ki SPEED SIGNIFICANTLY IMPROVE hoती hai.