在不同的解决方案中重复使用 SpecFlow 测试脚本
Re-using SpecFlow test scripts in different solutions
我们在不同的 Git 存储库中有不同的 C# Visual Studio 解决方案。每个存储库都包含需要功能测试的源代码,这些测试将与 Azure DevOps 集成。我们的想法是拥有一个单一的 C# 测试自动化框架,其中包含可在所有解决方案中使用的通用步骤、挂钩和逻辑。
我想到的一些想法:
- 拥有一个包含自动化框架文件的单独存储库,只需为每个解决方案/存储库复制和粘贴挂钩、步骤、配置文件等。
- 在每个解决方案/存储库中创建一个 SpecFlow 项目,并为每个解决方案维护一个自动化框架。
- 使用 NuGet 打包测试框架并将其安装到每个解决方案中。我个人喜欢最后一种方法,但我不确定如何实现。
关于如何解决它有什么建议或想法吗?
您可以使用 Bindings from External Assemblies,它允许您创建包含步骤定义和挂钩的通用 class 库,然后在多个测试项目中重复使用它们。
如果在您的测试项目中使用 SpecFlow.json,请添加:
{
... other JSON settings for SpecFlow ...
"stepAssemblies": [
{
"assembly": "NameOfYourSharedBindings"
}
]
}
如果使用 App.config:
<specFlow>
<!-- other SpecFlow settings -->
<stepAssemblies>
<stepAssembly assembly="NameOfYourSharedBindings" />
</stepAssemblies>
</specFlow>
只需将 NameOfYourSharedBindings
替换为包含共享步骤和挂钩的 DLL 文件的文件名。请务必添加对测试项目的项目引用,以便它引用包含共享步骤的 class 库项目。
您不限于同一 Visual Studio 解决方案中另一个项目中的步骤定义。您可以引用预编译的 DLL 文件以及 NuGet 包。所以,实际上,选项 2 或 3 适合您。只需选择最适合您的用例的那个。
我们在不同的 Git 存储库中有不同的 C# Visual Studio 解决方案。每个存储库都包含需要功能测试的源代码,这些测试将与 Azure DevOps 集成。我们的想法是拥有一个单一的 C# 测试自动化框架,其中包含可在所有解决方案中使用的通用步骤、挂钩和逻辑。
我想到的一些想法:
- 拥有一个包含自动化框架文件的单独存储库,只需为每个解决方案/存储库复制和粘贴挂钩、步骤、配置文件等。
- 在每个解决方案/存储库中创建一个 SpecFlow 项目,并为每个解决方案维护一个自动化框架。
- 使用 NuGet 打包测试框架并将其安装到每个解决方案中。我个人喜欢最后一种方法,但我不确定如何实现。
关于如何解决它有什么建议或想法吗?
您可以使用 Bindings from External Assemblies,它允许您创建包含步骤定义和挂钩的通用 class 库,然后在多个测试项目中重复使用它们。
如果在您的测试项目中使用 SpecFlow.json,请添加:
{
... other JSON settings for SpecFlow ...
"stepAssemblies": [
{
"assembly": "NameOfYourSharedBindings"
}
]
}
如果使用 App.config:
<specFlow>
<!-- other SpecFlow settings -->
<stepAssemblies>
<stepAssembly assembly="NameOfYourSharedBindings" />
</stepAssemblies>
</specFlow>
只需将 NameOfYourSharedBindings
替换为包含共享步骤和挂钩的 DLL 文件的文件名。请务必添加对测试项目的项目引用,以便它引用包含共享步骤的 class 库项目。
您不限于同一 Visual Studio 解决方案中另一个项目中的步骤定义。您可以引用预编译的 DLL 文件以及 NuGet 包。所以,实际上,选项 2 或 3 适合您。只需选择最适合您的用例的那个。