You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TestMethod中访问TestAdapter与ExpectedResult?

问题1:在测试方法中访问TestAdapter

不同测试框架的实现方式不同,以下是两种主流框架的解决方案:

  • NUnit框架:直接通过TestContext.CurrentContext获取当前测试上下文,其中TestAdapter属性可直接访问TestAdapter实例:
    using NUnit.Framework;
    
    [TestFixture]
    public class MyTests
    {
        [Test]
        public void TestMethod()
        {
            var testAdapter = TestContext.CurrentContext.TestAdapter;
            // 在此处使用testAdapter
        }
    }
    
  • MSTest框架:MSTest并未直接公开TestAdapter属性。若确实需要访问,可通过自定义测试扩展或反射实现,但通常使用TestContext即可获取绝大多数测试相关信息,无需直接操作TestAdapter。
问题2:获取测试用例的ExpectedResult值并实现判断逻辑

你提供的代码使用了NUnit的[TestCase(ExpectedResult)]特性,可通过TestContext提取当前测试用例的预期结果值,修改后的代码如下:

using NUnit.Framework;
using FluentAssertions;

[TestFixture]
public class MyTests
{
    [TestCase("Pass", ExpectedResult = 1)]
    [TestCase("Fail", ExpectedResult = 0)]
    [TestCase("PassDueToExpectError", ExpectedResult = -1)]
    public int Test(string msg)
    {
        int ret = 0;

        // 获取当前测试用例的ExpectedResult
        var testCaseAttr = TestContext.CurrentContext.Test
            .GetAttributes<TestCaseAttribute>(true)
            .FirstOrDefault();
        int expectedValue = testCaseAttr?.ExpectedResult != null 
            ? Convert.ToInt32(testCaseAttr.ExpectedResult) 
            : 0;

        switch (msg)
        {
            case "Pass":
                return 1;
            default:
                ret = 0;
                break;
        }

        if (expectedValue < 0) 
        {
            return -1;
        }

        ret.Should().BeGreaterThan(0);
        return 0;
    }
}

核心说明:

  1. 通过TestContext.CurrentContext.Test.GetAttributes<TestCaseAttribute>(true)获取当前执行的测试用例对应的TestCaseAttribute实例
  2. 从属性中提取ExpectedResult并转换为int类型(可根据实际需求调整类型)
  3. 直接使用转换后的expectedValue完成条件判断,多TestCase场景下会自动匹配当前执行的用例预期值

内容的提问来源于stack exchange,提问作者Doc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:23:26