C# में परीक्षण: .NET प्रोजेक्ट्स के लिए Unit, Integration और E2E टेस्ट

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें
```html

C# में परीक्षण: Unit, Integration और E2E — .NET डेवलपर के लिए पूर्ण गाइड



सॉफ्टवेयर की गुणवत्ता परीक्षणों से शुरू होती है। C# (.NET) इकोसिस्टम में परीक्षण की एक स्थापित संस्कृति है जिसमें तीन प्रमुख स्तर शामिल हैं: यूनिट (unit), इंटीग्रेशन (integration) और एंड-टू-एंड (E2E) परीक्षण। इस लेख में, हम व्यावहारिक उदाहरणों के साथ प्रत्येक स्तर का विश्लेषण करेंगे, सर्वोत्तम लाइब्रेरी दिखाएंगे और बताएंगे कि आप अपने .NET प्रोजेक्ट के लिए एक प्रभावी परीक्षण रणनीति कैसे बना सकते हैं।



1. C# में Unit-परीक्षण: कोड गुणवत्ता का आधार



Unit-परीक्षण (मॉड्यूलर परीक्षण) प्रोग्राम के अलग-अलग घटकों — विधियों, क्लासेस, फंक्शन्स — की बाहरी निर्भरताओं से अलग करके जांच करते हैं। .NET में मुख्य फ्रेमवर्क xUnit, NUnit और MSTest हैं। सबसे लोकप्रिय xUnit माना जाता है, इसकी लचीलापन और .NET Core के साथ एकीकरण के कारण।



Unit-परीक्षणों के लिए लाइब्रेरी:

  • xUnit — मुख्य फ्रेमवर्क (Microsoft द्वारा अनुशंसित)
  • Moq — निर्भरताओं को अलग करने के लिए mock-ऑब्जेक्ट बनाना
  • FluentAssertions — बेहतर assertion-अभिव्यक्तियाँ
  • AutoFixture — परीक्षण डेटा का स्वचालित निर्माण


Moq के साथ xUnit पर unit-परीक्षण का उदाहरण:



using Xunit;using Moq;using FluentAssertions;

public class OrderServiceTests{ [Fact] public void CalculateTotal_WithValidItems_ReturnsCorrectSum() { // Arrange var mockRepo = new Mock<IProductRepository>(); mockRepo.Setup(r => r.GetPrice(1)).Returns(100m); mockRepo.Setup(r => r.GetPrice(2)).Returns(50m);

var service = new OrderService(mockRepo.Object); var items = new List<OrderItem> { new OrderItem { ProductId = 1, Quantity = 2 }, new OrderItem { ProductId = 2, Quantity = 1 } };

// Act var total = service.CalculateTotal(items);

// Assert total.Should().Be(250m); mockRepo.Verify(r => r.GetPrice(1), Times.Once); mockRepo.Verify(r => r.GetPrice(2), Times.Once); }}


Unit-परीक्षणों के लिए सुझाव:

  • AAA पैटर्न (Arrange, Act, Assert) का पालन करें
  • एक परीक्षण — एक जाँच (एक assert)
  • पैरामीटरीकरण के लिए [Theory] का [InlineData] के साथ उपयोग करें
  • बाहरी सेवाओं का परीक्षण न करें — मॉक का उपयोग करें


2. इंटीग्रेशन परीक्षण: घटकों के बीच परस्पर क्रिया की जाँच



इंटीग्रेशन परीक्षण यह जाँचते हैं कि सिस्टम के विभिन्न मॉड्यूल एक साथ कैसे काम करते हैं: डेटाबेस, फ़ाइल सिस्टम, बाहरी API। unit-परीक्षणों के विपरीत, यहाँ हम वास्तविक या वास्तविक के करीब निर्भरताओं का उपयोग करते हैं।



.NET में इंटीग्रेशन परीक्षण के लिए उपकरण:

  • Microsoft.AspNetCore.TestHost — एम्बेडेड वेब सर्वर
  • TestContainers — DB का कंटेनरीकरण (PostgreSQL, SQL Server, Redis)
  • Respawn — परीक्षणों के बीच डेटाबेस साफ़ करना
  • WebApplicationFactory<T> — परीक्षण होस्ट बनाना


TestContainers और WebApplicationFactory के साथ इंटीग्रेशन परीक्षण का उदाहरण:



using Microsoft.AspNetCore.Mvc.Testing;using Testcontainers.PostgreSql;using Xunit;

public class UserApiIntegrationTests : IAsyncLifetime{ private readonly PostgreSqlContainer _dbContainer; private WebApplicationFactory<Program> _factory;

public UserApiIntegrationTests() { _dbContainer = new PostgreSqlBuilder() .WithImage("postgres:15") .WithDatabase("testdb") .WithUsername("tes ```

ब्लॉग

पुस्तक अनुशंसाएँ