ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

dotnet/skills writing-mstest-tests详解:版本兼容的MSTest测试编写规范完整指南

dotnet/skills writing-mstest-tests详解:版本兼容的MSTest测试编写规范完整指南 dotnet/skills writing-mstest-tests详解版本兼容的MSTest测试编写规范完整指南【免费下载链接】skillsRepository for skills to assist AI coding agents with .NET and C#项目地址: https://gitcode.com/GitHub_Trending/skills17/skills项目与功能速览skills是一个面向 .NET 与 C# 的 AI 编程智能体技能库其中dotnet-test插件的writing-mstest-tests技能专门负责版本兼容的 MSTest 测试编写规范修改、现代化和审查现有 MSTest 测试代码时自动遵循项目已安装版本支持的 API避免写出编译不过的时髦代码。上图来自仓库内的技能评估报告展示每个技能相对基线baseline的质量对比——writing-mstest-tests 同样通过这类评估保证输出稳定性。writing-mstest-tests 是什么它是一份给 AI 编程助手使用的技能说明书核心使命只有一句话帮你在不超出项目已安装 MSTest 版本 API 范围的前提下写出有效、可诊断、符合约定的单元测试。技能定义文件SKILL.md在插件中的定位见 dotnet-test README✅适用修复/现代化现有 MSTest 测试、断言 API 咨询、参数顺序纠正、MSTESTxxxx分析器告警修复❌不适用从零设计新测试用例交给code-testing-agent、运行测试run-tests、框架版本迁移migrate-mstest-v1v2-to-v3等、xUnit/NUnit/TUnit核心价值一版本兼容硬性门槛技能内置一张MSTest API 可用性表把MSTest 3.x拆成不同的 API 层级——这是新手最容易踩的坑API / 模式最低版本旧版本兼容写法Assert.ThrowsExactly*、统一Assert.Contains/HasCount/IsEmpty3.8Assert.ThrowsException*、CollectionAssertAssert.IsGreaterThan、StartsWith、MatchesRegex3.10StringAssert、Assert.IsTrue泛型Assert.IsInstanceOfTypeT(value, out var typed)仅 3.4–3.11非泛型断言后强转v4 直接返回类型化值ValueTuple 版DynamicData3.7IEnumerableobject[]构造函数注入TestContext3.6实例属性注入[Retry]、[OSCondition]3.8无内置重试需自行处理[CICondition]3.10项目自有条件机制技能明确要求这是硬性门槛——确定版本后绝不能照搬更高版本的示例。例如 MSTest 3.5.x 项目收到Assert.ThrowsExactly就无法编译必须回退到Assert.ThrowsException。核心价值二断言编写规范技能指导选最具体、且当前版本支持的断言让失败信息直接说明问题所在你在验证什么推荐断言两值相等Assert.AreEqual(expected, actual)期望值在前同一对象实例Assert.AreSame空 / 非空Assert.IsNull/IsNotNull集合恰好 N 项Assert.HasCount(N, collection)3.8代码抛出异常Assert.ThrowsExactlyT3.8旧版用ThrowsExceptionT关键细节包括参数顺序AreEqual必须期望在前、实际在后失败报告的 Expected/Actual 标签才不会颠倒异常断言把抛异常的操作放进 lambda区分ThrowsT类型或其派生类型与ThrowsExactlyT仅精确类型消灭泛型Assert.IsTrue如IsTrue(list.Count 0)→IsEmpty(list)失败时能说出集合本应为空而不是布尔条件为假核心价值三数据驱动与生命周期规范数据驱动简单值用[DataRow]复杂数据在 3.7 用ValueTuple数据源获得编译期类型安全3.8 还可用TestDataRowT附加DisplayName元数据测试类结构sealed测试类、AAAArrange-Act-Assert模式、MethodName_Scenario_ExpectedBehavior命名约定生命周期构造函数做同步初始化、[TestInitialize]仅留给异步初始化、[TestCleanup]保证失败时也执行清理TestContext在 3.6 才可构造函数注入核心价值四修复 MSTest 分析器告警MSTESTxxxx技能内置一张常见MSTESTxxxx诊断速查表例如规则问题修复MSTEST0017AreEqual参数颠倒期望值放第一参数MSTEST0023取反断言IsTrue(!x)改用Assert.IsFalse(x)MSTEST0037低效断言IsTrue(x null)改用Assert.IsNullMSTEST0039旧式ThrowsException3.8 改用Throws/ThrowsExactlyMSTEST0061测试体内运行时判断 OS改用[OSCondition]并建议通过 MSBuild 属性MSTestAnalysisMode3.8全局启用Recommended规则集优先修复代码而非抑制告警。该技能如何自我验证仓库为每个技能配套评估文件 eval.yaml内含十余个真实场景超时协作取消、期望/实际标签纠正、锁定 3.5.2 版本的旧项目降级修复、类型断言的版本分支差异等每个用例都带评分细则。配套的测试工程示例可参考旧式反模式工程fixtures/legacy-antipatterns/现代 MSTest 3.8.2 工程fixtures/modern-mstest/总结writing-mstest-tests 用一份版本感知的编写规范把 MSTest 测试从能跑就行提升到失败可诊断、版本可编译、约定一致先确认项目实际版本再套用兼容的断言、数据驱动、生命周期与分析器修复方案——这正是它在 dotnet-test 插件 中承担版本兼容的 MSTest 测试编写规范角色的原因。【免费下载链接】skillsRepository for skills to assist AI coding agents with .NET and C#项目地址: https://gitcode.com/GitHub_Trending/skills17/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表