我正在做一个C#项目,该项目使用specflow和playwright来处理我们的大部分测试,我正在尝试建立一种方法,只为失败的测试生成playwright跟踪文件。现在我正在打印每个未通过测试的名称。txt文件,然后使用shell脚本在测试运行结束时手动调用该文件中的每个测试的dotnet测试,并启用playwright跟踪生成。这适用于具有简单名称的测试,例如“0”;FILLINALFIELDSONPAGE“;,但是,如果使用示例从场景大纲生成的测试失败,它会给我一个错误。我认为这是由于dotnet测试解析测试名称的方式,因为specflow以以下格式生成名称
CheckSortingAndDataInHoverMenu("C, User",null)
其中;C、 “用户”;是场景大纲中给出的示例之一。我尝试添加一行,将字符串重新格式化为更符合我在别处看到的建议,因此最终结果如下所示:文章源自玩技e族-https://www.playezu.com/180118.html
CheckSortingAndDataInHoverMenu("C%2C User"%2Cnull)
但我仍然得到以下错误:文章源自玩技e族-https://www.playezu.com/180118.html
Running dotnet test on "CheckSortingAndDataInHoverMenu("C%2C User"%2Cnull)"
MSBUILD : error MSB1009: Project file does not exist.
Switch: User"%2Cnull)
我已经核实了。csproj文件确实存在,其他测试可以从该命令运行,因此我知道它是从正确的目录调用的。看起来dotnet test认为;用户%2Cnull)“;是的名称。csproj文件,我将其作为arg传递,我不知道如何使其正确处理完整的测试名称。文章源自玩技e族-https://www.playezu.com/180118.html 文章源自玩技e族-https://www.playezu.com/180118.html
未知地区 1F
我找到的解决方案是简单地删除括号中测试名称的一部分,这导致dotnet test命令使用匹配的名称运行每个测试。然后,我在生成的每个测试跟踪的名称中添加了一个随机guid,以防止它们相互覆盖。