我如何添加附件到通过SpecFlow运行的MSTest

本文关键字:SpecFlow 运行 MSTest 何添加 添加 | 更新日期: 2023-09-27 18:15:32

我有一套使用MSTest框架的SpecFlow测试。我通过Microsoft Test manager运行它们。我想知道的是我是否能让它在运行中附加一个文件。

我的代码生成一个HTML文件,我想附加,以便用户可以进入MTM测试的结果,并简单地打开它。

我看到前面的问题有:

TestContext.AddResultFile(testPassedFile);

但是当我试图将TestContext添加到我的"[AfterScenario]"方法时,它没有一个名为AddResultFile的方法。

有没有人知道我如何能够实现添加这个HTML文件的结果。

我如何添加附件到通过SpecFlow运行的MSTest

没有办法从StepBindings中访问TestContext:
在SpecFlow中访问TestContext步骤绑定类

我看到的唯一方法是为测试编写自己的生成器,以便生成的测试代码将TestContext写入SpecFlow的ScenarioContext,以便您可以从步骤绑定中访问它。

如果你想省去这些麻烦,你可以看看https://jessehouwing.net/specflow-custom-unit-test-generator/.

在SpecFlow 3中,您可以通过内容注入获得TestContext,并存储对它的引用,然后可以在步骤定义中访问:

using Microsoft.VisualStudio.TestTools.UnitTesting;
using TechTalk.SpecFlow;
[Binding]
public class Context
{
    private static TestContext test_context;
    [BeforeScenario]
    private static void SetContext(ScenarioContext context)
    {
        test_context = context.ScenarioContainer.Resolve<TestContext>();
    }
    public static void Attach(string file_name)
    {
        test_context.AddResultFile(file_name);
    }
}