首页 > 解决方案 > NUnit.Framework:如何使用 AND 和 OR 选项运行类别?

问题描述

NUnit.Framework:如何使用 AND 和 OR 选项运行类别?

我已经在测试方法中定义了我的类别,例如:

第一种方法:

[<Test>]
   [<Category("Smoke")>]
   [<Category("Reg")>]

方法二:

[<Test>]
   [<Category("Sanity")>]
   [<Category("Reg")>]

第三种方法:

[<Test>]
   [<Category("Sanity")>]
   [<Category("Smoke")>]

第四种方法:

[<Test>]
   [<Category("Reg")>]
   [<Category("Login")>]

我可以使用以下方法过滤和运行特定测试: dotnet test --filter TestCategory=Smoke

现在我的要求是运行:1)所有具有 Sanity AND Smoke 类别的方法(在上述情况下应该只运行第三种方法)。我试过:dotnet test --filter "TestCategory=Sanity" && "TestCategory=Smoke"但它不起作用。

2) 具有 Sanity 或 Smoke 类别的所有方法(在上述情况下,除第 4 种外,应全部运行)。我试过:dotnet test --filter "TestCategory=Sanity" || “TestCategory=Smoke”,但它不起作用。

请建议在明智地运行 NUnit 类别时如何运行 AND 和 OR?

标签: nunit

解决方案


dotnet test --filter <expression>选项采用单个参数,即过滤器表达式。您提供了三个论点。

此外,由于您使用的是dotnet test命令,因此您必须使用 Microsoft 认可的运算符和特征。NUnit 的测试选择语言中的运算符将无法工作,除非它们也被 Microsoft 使用。

在这种情况下,您正在寻找dotnet test --filter "TestCategory=Sanity|TestCategory=Smoke"

请注意,您需要按照您正在使用的命令外壳的要求对上述表达式中的字符进行转义。在 Windows 上,我相信双引号会起作用。在 Linux 上,根据您的 shell,您可能需要使用单引号。

过滤器表达式的语法在这里得到了很好的介绍:https ://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test


推荐阅读