如何清除NUnit.Framework中TestContext.CurrentContext.Result.Assertions的所有详情?
清空TestContext.CurrentContext.Result.Assertions的实现方法
默认情况下,TestContext.CurrentContext.Result.Assertions是只读集合,无法直接调用清空方法,需要通过反射绕过访问限制来实现:
using System.Reflection; using NUnit.Framework; public static void ClearTestAssertions() { var testResult = TestContext.CurrentContext.Result; // 定位Result对象中存储断言的私有字段 var assertionsField = testResult.GetType().GetField("_assertions", BindingFlags.Instance | BindingFlags.NonPublic); if (assertionsField != null) { // 用空的断言结果列表替换原有集合 var emptyAssertionList = new System.Collections.Generic.List<NUnit.Framework.Interfaces.AssertionResult>(); assertionsField.SetValue(testResult, emptyAssertionList); } }
注意事项
- 该实现依赖NUnit内部的私有字段命名(
_assertions),如果后续NUnit版本调整内部结构,代码可能需要同步修改 - 除非是自定义测试报告、特殊测试场景等刚需,不建议随意修改测试框架的内部状态,避免引入不稳定因素
内容的提问来源于stack exchange,提问作者Hemant Pawar
相关产品推荐
相关产品推荐

