【发布时间】: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