gpt4 book ai didi

c# - 从步骤定义中的 SpecFlow 功能文件获取路径

转载 作者:行者123 更新时间:2023-11-30 22:03:33 25 4
gpt4 key购买 nike

是否可以在运行时在步骤定义中检索 SpecFlow 功能文件的路径?

片段:

[Given(@"Some given statement")]
public void GivenSomeGivenStatement() {

var featureFilePath = // retrieve the path of the feature file
// that executes this step.
}

上下文:
我们对数据库和查询进行测试。源数据在 Excel 文件和 .SQL 文件中创建(用于检查查询)。这些源数据是大型数据集,无法放入特征文件本身或使用 SpecFlow.Plus.Excel 扩展。
为了使数据靠近特征文件,我们希望将此数据与特征文件本身放在同一文件夹中。为此,我们需要这个特征文件的路径,所以我们也有测试数据的路径。

最佳答案

这是一个建议。这只是我快速整理的东西,所以还有很大的改进空间。它依赖于功能文件名与您在描述中提供的功能的标题相同。它还假设您的 SpecFlow VS 项目有一个常规的文件夹结构,因为有很多字符串操作。

首先,调用代码应使用 SpecFlow BeforeScenario 属性。像这样:

public void BeforeScenario()
{
//grabs Feature Title from SpecFlow context
var featureName = FeatureContext.Current.FeatureInfo.Title;
//Calls method to obtain path of file
var featureFilePath = GetFeatureFilePath(featureName);
}

GetFeatureFilePath 方法将如下所示:

private static string GetFeatureFilePath(string featureName)
{
string startupPath = Environment.CurrentDirectory;
var splitStartupPath = startupPath.Split(new[] {"\\"}, StringSplitOptions.None);

var featureFolder = splitStartupPath[0] + @"\\" +
splitStartupPath[1] + @"\\" +
splitStartupPath[2] + @"\\" +
splitStartupPath[3] + @"\\" +
splitStartupPath[4] + @"\\" +
splitStartupPath[5] + @"\\Features\";

var dir = new DirectoryInfo(featureFolder);

foreach (var fi in dir.GetFiles())
{
if (fi.FullName.Contains(featureName))
return fi.FullName;
}

return "No Feature File Found With Title: " + featureName;
}

它会抓取您的当前目录并将其拆分到 Features 文件夹所在的位置。然后它遍历每个功能文件,直到找到一个在其路径名中包含您的功能标题的文件并将其作为完整路径返回。

目前我不知道有任何其他方法可以获取此信息。

关于c# - 从步骤定义中的 SpecFlow 功能文件获取路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25996940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com