SpecFlow 测试无法使用 Playwright.NET 运行

Posted

技术标签:

【中文标题】SpecFlow 测试无法使用 Playwright.NET 运行【英文标题】:SpecFlow Test cannot be run with Playwright.NET 【发布时间】:2022-01-02 07:17:33 【问题描述】:

我使用 c# 和 playwright 创建了一个 specflow 项目。代码没有问题,但在 Visual Studio 上使用测试资源管理器时测试不运行。 当我运行测试时,结果总是说:

测试未运行

我为playwrightspecflow 安装了nuget 包,但看不到任何错误。运行测试是否需要任何其他组件? 我在 c# 中使用playwright.net 任何建议将不胜感激 示例功能文件:

Feature: feature example

@mytag
Scenario: Open test
    Given the test page is open
    When I navigate to the links page
    Then I will see all the links

谢谢

【问题讨论】:

【参考方案1】:

1- 测试是否被忽略?

如果你有 r# 打开其中一个测试文件并检查测试方法声明左侧是否有一个灰色的小眼睛状图标,如果有,则忽略测试。

如果不在 r# 上,请打开 vs 文本资源管理器并检查您的测试是否存在,如果存在,则窗口上会显示它们被忽略的内容。

当您的文件路径太长时(即在文件夹层次结构中很深,或者可能不是那么深,但文件夹和文件名很长。

尝试在驱动器上的文件夹层次结构中将您的测试项目向上移动。

2- 你有测试框架的测试运行器吗? 即 nunit 测试运行器? 如果您在测试资源管理器中根本看不到您的测试,请尝试将测试框架的运行器安装为 vs 扩展。

【讨论】:

是的,测试在测试资源管理器上可见,但它只是不运行。我将 nunit 测试运行器安装为 vs 扩展,但仍然无法正常工作。过去我在 c# 中使用了 selenium,没关系。我正在使用带有 c# 的 playwright.net。想知道是否还有其他东西需要启用才能运行测试 关于测试的状态,它只是说“未运行”,因此它们不会被忽略 您是否检查过测试的总路径长度/尝试将它们移到目录结构中?尽管听起来很奇怪,但我在不到一周前就解决了这个问题【参考方案2】:

您是否尝试将解决方案在目录层次结构中上移?

即。 c:\projects\mycompany.projects.crmprojects.solution1\project1\testproject....\test.cs

变成

c:\projects\solution1\project1\test.cs

【讨论】:

嗨,是的,我做到了。我发现问题出在对规范流程的帐户签名上。现在测试可以运行,但它们总是通过。我在日志中注意到了这个错误,但测试刚刚通过:EndTests 中缺少 [assembly:RuntimePlugin] 属性,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null 这是测试的 Given 部分的示例。即使我输入了错误的网址并且没有启动页面,它也会一直过去。 [绑定] public class OpenTestSteps [Given(@"页面打开")] public async void GivenThePageIsOpen() using var playwright = await Playwright.CreateAsync();等待使用 var browser = await playwright.Chromium.LaunchAsync(headless: false); var page = await browser.NewPageAsync(); await page.GoToAsync("testdummy.com");

以上是关于SpecFlow 测试无法使用 Playwright.NET 运行的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Specflow 测试结果转换为 Cucumber Messages 格式

如何在下拉列表中选择与 specflow 大纲值相同的值

Specflow - 场景大纲测试被忽略

在 TFS 构建中运行 Specflow 测试

使用 specflow 在验收测试中清理数据库

SpecFlow测试平台是否支持异步任务?