Cách chạy kiểm thử với Dotnet Test trong .NET 10

Ashley Goolam

Ashley Goolam

27 tháng 8 2025

Cách chạy kiểm thử với Dotnet Test trong .NET 10

Chào các nhà phát triển .NET! Sẵn sàng nâng tầm trò chơi kiểm thử của bạn với Microsoft Testing Platform (MTP).NET 10 chưa? Nếu bạn đã và đang sử dụng dotnet test với trình chạy VSTest truyền thống, hãy chuẩn bị tinh thần—MTP có mặt ở đây để giúp việc kiểm thử của bạn mượt mà hơn, nhanh hơn và linh hoạt hơn. Trong hướng dẫn thân mật này, chúng ta sẽ khám phá MTP, hay còn gọi là MicrosoftTestingPlatform, là gì, tại sao nó là một bước tiến so với VSTest, và cách khai thác nó với dotnet test trong .NET 10 để xây dựng các bài kiểm thử mạnh mẽ cho dự án của bạn. Tôi sẽ hướng dẫn bạn từng bước mà tôi đã thực hiện để thử nghiệm với thiết lập này, từ một dự án MSTest cơ bản đến một giải pháp đa dự án với một tệp thực thi độc lập. Hãy cùng đi sâu vào thế giới của MTP, MicrosoftTestingPlatform, .NET 10, dotnet test và làm cho việc kiểm thử trở nên dễ dàng và thú vị hơn!

💡
Bạn muốn một công cụ kiểm thử API tuyệt vời có thể tạo Tài liệu API đẹp mắt?

Bạn muốn một nền tảng tích hợp, tất cả trong một để Đội ngũ Phát triển của bạn làm việc cùng nhau với năng suất tối đa?

Apidog đáp ứng mọi yêu cầu của bạn và thay thế Postman với mức giá phải chăng hơn nhiều!
button

Tại Sao Kiểm Thử Lại Quan Trọng Trong Phát Triển .NET

Trước khi bắt tay vào thực hành, hãy cùng nói về lý do tại sao kiểm thử lại là một vấn đề lớn. Cho dù bạn đang xây dựng một ứng dụng nhỏ hay một hệ thống doanh nghiệp khổng lồ, các bài kiểm thử đảm bảo mã của bạn hoạt động như mong đợi, bắt lỗi sớm và giúp bạn tránh khỏi những buổi debug thâu đêm. Các bài kiểm thử đơn vị tự động, như những gì chúng ta sẽ tạo với MSTestMTP, cho phép bạn xác minh chức năng, cải thiện chất lượng mã và giúp việc tái cấu trúc trở nên dễ dàng. Với các cải tiến hiệu suất của .NET 10 và khung kiểm thử hiện đại của MTP, bạn đã sẵn sàng viết các bài kiểm thử nhanh chóng, đáng tin cậy và dễ dàng tích hợp vào các pipeline CI/CD. Sẵn sàng để xem cách thực hiện chưa? Hãy cùng theo dõi hành trình của tôi!

Microsoft Testing Platform (MTP) Là Gì?

Microsoft Testing Platform (MTP), hay MicrosoftTestingPlatform, là khung kiểm thử thế hệ tiếp theo của Microsoft, được giới thiệu để thay thế trình chạy VSTest đã lỗi thời. Không giống như VSTest, vốn dựa vào các bộ điều hợp phức tạp và việc thực thi dựa trên DLL, MTP mang đến trải nghiệm gốc, được sắp xếp hợp lý để chạy các bài kiểm thử trong .NET. Nó được tích hợp sẵn trong .NET 10, giúp nó nhanh hơn và linh hoạt hơn, với các tính năng như trình chạy kiểm thử tệp thực thi độc lập và tích hợp tốt hơn với dotnet test. MTP hỗ trợ MSTest, NUnit và xUnit, và nó được thiết kế cho các quy trình làm việc hiện đại, bao gồm CI/CD và phát triển đa nền tảng. Bạn có thể coi nó là người anh em 'ngầu' hơn, hiệu quả hơn của VSTest, được tối ưu hóa cho các cải tiến hiệu suất của .NET 10.

Bước 1: Thiết Lập Một Dự Án MSTest Cơ Bản Với MTP

Hãy bắt đầu đơn giản bằng cách tạo một dự án MSTest cơ bản để xem MTP hoạt động. Đây là cách tôi khởi động mọi thứ:

Tạo Dự Án:

dotnet new mstest -n MyMtpTests

Kiểm Tra Tệp Dự Án:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="coverlet.collector" Version="6.0.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
    <PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
    <PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
  </ItemGroup>
</Project>

Chạy Các Bài Kiểm Thử:

cd MyMtpTests
dotnet test
vstest runner

Điều Gì Đang Xảy Ra? Đây là một thiết lập truyền thống sử dụng VSTest, nhưng nó là một nền tảng vững chắc trước khi chúng ta nâng cấp lên MTP. Dự án chạy các bài kiểm thử dưới dạng DLL, điều này không sao nhưng không linh hoạt bằng cách tiếp cận tệp thực thi của MTP.

Bước 2: Phát Triển Sang Trình Chạy Kiểm Thử Dựa Trên Tệp Thực Thi Của MTP

Bây giờ, hãy làm cho mọi thứ thú vị hơn bằng cách chuyển sang trình chạy tệp thực thi độc lập của MTP, cho phép bạn chạy các bài kiểm thử mà không cần dotnet test. Đây là cách tôi đã làm:

Cập Nhật Tệp Dự Án:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>
    <!-- Enable MTP runner and executable output -->
    <EnableMSTestRunner>true</EnableMSTestRunner>
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
    <OutputType>Exe</OutputType>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="coverlet.collector" Version="6.0.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
    <PackageReference Include="MSTest.TestFramework" Version="3.10.2" />
    <PackageReference Include="MSTest.TestAdapter" Version="3.10.2" />
  </ItemGroup>
  <ItemGroup>
    <Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
  </ItemGroup>
</Project>

Các thay đổi chính:

Xây Dựng Dự Án:

dotnet build
exe file generated

Chạy Tệp Thực Thi:

cd bin/Debug/net8.0
run test on .exe file

Tại Sao Điều Này Tuyệt Vời: Cách tiếp cận tệp thực thi hoàn hảo cho các thiết lập CI/CD tùy chỉnh hoặc môi trường không cài đặt .NET SDK. Nó là một yếu tố thay đổi cuộc chơi về tính linh hoạt, và MTP làm cho nó nhanh hơn VSTest bằng cách giảm chi phí chung.

Bước 3: Nâng Tầm Với .NET 10 Và Kiểm Thử Đa Dự Án

Để thấy MTP.NET 10 tỏa sáng trong một kịch bản thực tế, hãy cùng xây dựng một giải pháp đa dự án với một thư viện lớp và các bài kiểm thử. Đây là cách tôi đã thiết lập nó:

Cấu trúc dự án cuối cùng:

MyMtpSolution/
│
├── MyLibrary/
│   ├── Calculator.cs
│   └── MyLibrary.csproj
│
├── MyLibrary.Tests/
│   ├── CalculatorTests.cs
│   └── MyLibrary.Tests.csproj
│
├── MyMtpSolution.sln
└── dotnet.config

1. Tạo một Solution:

dotnet new sln -n MyMtpSolution

2. Tạo một Thư viện Lớp:

dotnet new classlib -n MyLibrary
namespace MyLibrary
{
    public class Calculator
    {
        public int Add(int a, int b) => a + b;
        public int Subtract(int a, int b) => a - b;
        public int Multiply(int a, int b) => a * b;
        public int Divide(int a, int b) => 
            b == 0 ? throw new ArgumentException("Cannot divide by zero.") : a / b;
    }
}

3. Tạo một Dự án Kiểm thử:

dotnet new mstest -n MyLibrary.Tests
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MyLibrary;

namespace MyLibrary.Tests
{
    [TestClass]
    public class CalculatorTests
    {
        private Calculator _calculator;

        [TestInitialize]
        public void Setup()
        {
            _calculator = new Calculator();
        }

        [TestMethod]
        public void Add_ReturnsCorrectSum()
        {
            Assert.AreEqual(5, _calculator.Add(2, 3));
        }

        [TestMethod]
        public void Subtract_ReturnsCorrectDifference()
        {
            Assert.AreEqual(1, _calculator.Subtract(3, 2));
        }

        [TestMethod]
        public void Multiply_ReturnsCorrectProduct()
        {
            Assert.AreEqual(6, _calculator.Multiply(2, 3));
        }

        [TestMethod]
        public void Divide_ReturnsCorrectQuotient()
        {
            Assert.AreEqual(2, _calculator.Divide(6, 3));
        }

        [TestMethod]
        [ExpectedException(typeof(ArgumentException))]
        public void Divide_ByZero_ThrowsException()
        {
            _calculator.Divide(6, 0);
        }
    }
}

4. Thêm Tham chiếu Dự án:

dotnet add MyLibrary.Tests reference MyLibrary

5. Thêm Dự án vào Solution:

dotnet sln MyMtpSolution.sln add MyLibrary/MyLibrary.csproj
dotnet sln MyMtpSolution.sln add MyLibrary.Tests/MyLibrary.Tests.csproj

6. Cấu hình cho MTP:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>
    <EnableMSTestRunner>true</EnableMSTestRunner>
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="coverlet.collector" Version="6.0.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
    <PackageReference Include="MSTest.TestFramework" Version="3.10.2" />
    <PackageReference Include="MSTest.TestAdapter" Version="3.10.2" />
  </ItemGroup>
  <ItemGroup>
    <Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
  </ItemGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>

7. Nâng cấp lên .NET 10:

download .net10
<TargetFramework>net10.0</TargetFramework>

8. Tạo một tệp dotnet.config:

[dotnet.test.runner]
name = "Microsoft.Testing.Platform"

9. Xây dựng và Chạy Kiểm thử:

dotnet test
running the tests

Tại Sao Điều Này Tuyệt Vời: .NET 10 mang lại các cải thiện hiệu suất (JIT nhanh hơn, quản lý bộ nhớ tốt hơn), và tích hợp gốc của MTP loại bỏ các cầu nối cũ của VSTest, làm cho các bài kiểm thử nhanh hơn và đáng tin cậy hơn. Thiết lập đa dự án mô phỏng các ứng dụng thực tế, với một thư viện và dự án kiểm thử riêng biệt.

Cách .NET 10 Và MTP Cải Thiện Việc Kiểm Thử

MTP.NET 10 đưa việc kiểm thử lên một tầm cao mới:

Người dùng đang rất hào hứng về MTP: “Nó giống như VSTest nhưng không có gánh nặng—nhanh hơn và sạch hơn!” Với .NET 10, bạn có được hiệu suất tiên tiến, và MTP biến dotnet test thành một niềm vui.

Mẹo Khắc Phục Sự Cố

Kết Luận

Giờ đây bạn đã là một chuyên gia trong việc sử dụng MTP (MicrosoftTestingPlatform), .NET 10, dotnet test để xây dựng một thiết lập kiểm thử hiện đại! Từ một dự án MSTest cơ bản đến một giải pháp đa dự án với một tệp thực thi độc lập, bạn đã thấy cách MTP vượt trội hơn VSTest và cách .NET 10 tăng cường hiệu suất. Hãy thử thêm nhiều bài kiểm thử hơn, tích hợp vào pipeline CI/CD của bạn, hoặc khám phá các tính năng nâng cao của MTP như thực thi song song. Có các thiết lập kiểm thử thú vị nào không? Hãy chia sẻ chúng—hãy cùng duy trì tinh thần kiểm thử!

button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API