# Kiểm thử đơn vị & xUnit (.NET) > Framework xUnit, test case, assertions, Moq, FluentAssertions, code coverage, nguyên tắc TDD - 20 câu hỏi phỏng vấn - Mid-Level - [Câu hỏi phỏng vấn: .NET](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van.md) ## 1. xUnit là gì trong ngữ cảnh .NET? **Câu trả lời** xUnit là một framework kiểm thử đơn vị mã nguồn mở cho .NET, lấy cảm hứng từ JUnit và NUnit. Nó sử dụng các attribute như [Fact] cho các test đơn giản và [Theory] cho các test có tham số. xUnit khuyến khích các thực hành tốt như cô lập test (mỗi test tạo một instance lớp test mới) và tránh trạng thái chia sẻ thông qua các phương thức Setup/Teardown truyền thống. ## 2. Sự khác biệt giữa [Fact] và [Theory] trong xUnit là gì? **Câu trả lời** [Fact] đánh dấu một test đơn giản chạy một lần không có tham số, trong khi [Theory] đánh dấu một test có tham số chạy nhiều lần với các giá trị khác nhau được cung cấp qua [InlineData], [MemberData] hoặc [ClassData]. Sử dụng [Theory] tránh trùng lặp mã khi kiểm thử nhiều kịch bản tương tự với dữ liệu khác nhau. ## 3. Cách sử dụng [InlineData] với [Theory] trong xUnit như thế nào? **Câu trả lời** [InlineData] cung cấp dữ liệu trực tiếp trong attribute cho một test [Theory], cho phép cùng một test chạy với các giá trị khác nhau. Mỗi attribute [InlineData] đại diện cho một test case riêng biệt. Cách tiếp cận này lý tưởng để kiểm thử nhiều kịch bản đơn giản mà không cần tạo các lớp dữ liệu riêng, giảm mã boilerplate. ## Còn 17 câu hỏi nữa - Lợi thế chính của Moq trong kiểm thử đơn vị .NET là gì? - Cách cấu hình một mock với Moq để một phương thức trả về một giá trị cụ thể như thế nào? Đăng ký miễn phí: https://sharpskill.dev/vi/login ## Các chủ đề phỏng vấn .NET khác - [Cơ bản về C#](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/csharp-basics.md): 25 câu hỏi, Junior - [LINQ & Delegates](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/csharp-linq-delegates.md): 20 câu hỏi, Junior - [Kiến thức cốt lõi ngôn ngữ C#](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/csharp-language-essentials.md): 15 câu hỏi, Junior - [Kiến thức cơ bản về ASP.NET Core](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/aspnet-core-fundamentals.md): 18 câu hỏi, Junior - [Vòng đời request trong ASP.NET Core](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/aspnet-core-request-lifecycle.md): 20 câu hỏi, Junior - [Configuration & Settings](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/configuration-settings.md): 20 câu hỏi, Junior - [Vòng đời ứng dụng](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/application-lifecycle.md): 20 câu hỏi, Junior - [Dependency Injection](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/dependency-injection.md): 24 câu hỏi, Mid-Level - [Entity Framework Core](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/entity-framework-core.md): 25 câu hỏi, Mid-Level - [Minimal APIs](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/minimal-apis.md): 18 câu hỏi, Mid-Level - [Phát triển Web API](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/web-api-development.md): 22 câu hỏi, Mid-Level - [Async trong ASP.NET Core](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/async-aspnet-core.md): 20 câu hỏi, Mid-Level - [Authentication & Authorization](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/authentication-authorization.md): 18 câu hỏi, Mid-Level - [HttpClient & Networking](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/httpclient-networking.md): 20 câu hỏi, Mid-Level - [Tuần tự hóa JSON](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/json-serialization.md): 20 câu hỏi, Mid-Level - [Entity Framework Core nâng cao](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/ef-core-advanced.md): 25 câu hỏi, Mid-Level - [Các tính năng nâng cao của C#](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/csharp-advanced-features.md): 20 câu hỏi, Mid-Level - [Clean Architecture](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/clean-architecture.md): 20 câu hỏi, Mid-Level - [Logging, Monitoring & Observability](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/logging-monitoring.md): 22 câu hỏi, Mid-Level - [Kiểm thử tích hợp](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/integration-testing.md): 18 câu hỏi, Mid-Level - [Docker & Containerization](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/docker-containerization.md): 16 câu hỏi, Mid-Level - [Quản lý gói NuGet](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/nuget-package-management.md): 16 câu hỏi, Mid-Level - [Memory Management & GC](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/memory-management-gc.md): 22 câu hỏi, Senior - [Lập trình phản ứng](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/reactive-programming.md): 24 câu hỏi, Senior - [Async/await & Mẫu thiết kế](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/async-await-patterns.md): 26 câu hỏi, Senior - [.NET Design Patterns](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/dotnet-design-patterns.md): 24 câu hỏi, Senior - [Tối ưu hóa hiệu năng](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/performance-optimization.md): 22 câu hỏi, Senior - [Bảo mật & Best Practices](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/security-best-practices.md): 24 câu hỏi, Senior - [SignalR & Thời gian thực](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/signalr-realtime.md): 22 câu hỏi, Senior - [Kiến trúc Microservices](https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/microservices-architecture.md): 25 câu hỏi, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/vi/technologies/dotnet/cau-hoi-phong-van/unit-testing-xunit