用途:该技能用于指导在 .NET 项目中编写基于 NUnit 的单元测试,涵盖标准测试与数据驱动测试两种方式。
主要能力与约定: 项目设置:使用独立测试项目,命名约定为 [ProjectName].Tests;引用 Microsoft.NET.Test.Sdk、NUnit、NUnit3TestAdapter 包;测试类与被测类对应(如 CalculatorTests 对应 Calculator);使用 dotnet test 运行测试。 测试结构:测试类加 [TestFixture],测试方法加 [Test],遵循 Arrange-Act-Assert 模式,命名采用 MethodName_Scenario_ExpectedBehavior;[SetUp]/[TearDown] 用于每个测试的初始化与清理,[OneTimeSetUp]/[OneTimeTearDown] 用于类级别,[SetUpFixture] 用于程序集级别。 标准测试:每个测试聚焦单一行为,断言清晰表达意图,测试相互独立且幂等,避免测试间依赖。 数据驱动测试:可用 [TestCase] 内联数据、[TestCaseSource] 程序化数据、[Values] 简单参数组合、[ValueSource] 属性或方法数据源、[Random] 随机数值、[Range] 顺序数值、[Combinatorial] 或 [Pairwise] 组合多参数。 断言:推荐 Assert.That 约束模型,如 Is.EqualTo、Is.SameAs、Contains.Item;也可用 Assert.AreEqual 经典风格、CollectionAssert、StringAssert;用 Assert.Throws<T> 或 Assert.ThrowsAsync<T> 测试异常;断言可加描述信息。 Mock 与隔离:可搭配 Moq 或 NSubstitute,Mock 依赖以隔离被测单元,使用接口便于 Mock,复杂场景可用 DI 容器。 测试组织:按功能或组件分组,用 [Category("CategoryName")] 分类,必要时用 [Order] 控制执行顺序,用 [Author("DeveloperName")] 标注归属,用 [Description] 补充说明,用 [Explicit] 标记不自动运行的测试,用 [Ignore("Reason")] 临时跳过。
限制:资料未提供具体版本要求、安装命令细节、收费或平台信息,暂未提供。