【问题标题】:Problem manually calling dotnet test on playwright tests generated by specflow在 specflow 生成的 playwright 测试中手动调用 dotnet 测试的问题
【发布时间】:2022-06-30 04:30:39
【问题描述】:

我正在开发一个 C# 项目,该项目使用带有 playwright 的 specflow 来处理我们的大部分测试,并且我正在尝试设置一种方法来仅为失败的测试生成 playwright 跟踪文件。现在,我将每个失败的测试的名称打印到 .txt 文件中,然后在启用 playwright 跟踪生成的测试运行结束时,使用 shell 脚本在该文件中的每个测试上手动调用 dotnet test。这适用于名称简单的测试,例如“FillInAllFieldsOnPage”,但如果使用示例从场景大纲生成的测试失败,则会出现错误。我相信这是由于 dotnet test 解析测试名称的方式,因为 specflow 以格式生成名称

CheckSortingAndDataInHoverMenu("C, User",null)

其中“C,用户”是场景大纲的示例之一。我尝试添加一行,将字符串重新格式化,使其更符合我在其他地方看到的建议,因此最终结果如下所示:

CheckSortingAndDataInHoverMenu(\"C%2C User\"%2Cnull)

但我仍然收到以下错误:

Running dotnet test on "CheckSortingAndDataInHoverMenu(\"C%2C User\"%2Cnull)"
MSBUILD : error MSB1009: Project file does not exist.
Switch: User"%2Cnull)

我已验证 .csproj 文件确实存在,并且可以从该命令运行其他测试,因此我知道它是从正确的目录调用的。看起来 dotnet test 认为 "User"%2Cnull)" 是一个 .csproj 文件的名称,我将它作为 arg 传递,我不知道如何让它正确处理完整的测试名称。

【问题讨论】:

  • %2C 表示文件名包含逗号 (0x2c)。为什么你的项目名称中带有逗号?
  • 这不是项目名称,只是使用场景大纲/示例模式时specflow生成的测试名称

标签: c# .net shell automated-tests specflow


【解决方案1】:

我找到的解决方案是简单地删除括号中的测试名称部分,这会导致 dotnet test 命令以匹配的名称运行每个测试。然后,我在生成的每个测试跟踪的名称中添加了一个随机 guid,以防止它们相互覆盖。

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 2022-08-16
    • 2010-09-23
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多