如何使用" - 其中" NUnit 3控制台中的参数?

时间:2016-09-08 10:39:00

标签: nunit nunit-3.0 nunit-console

NUnit 3有" --where"控制台中的参数,允许我们选择要运行的不同测试。它可以包含不同的命名空间或测试类别。

我希望(但不知道如何)包含一些命名空间来运行测试。我有具体的例子,我向你寻求帮助。

我们假设我们有下一个带测试的命名空间:

  1. Project.MainSuite(包括1个测试)
  2. Project.MainSuite.Category1(有2个测试)
  3. Project.MainSuite.Category1.TestSuite1(有3个测试)
  4. 如何使用--where参数运行下一个测试:

    1. 仅从Project.MainSuite.Category1进行测试(应运行2个测试)
    2. 来自Project.MainSuite.Category1Project.MainSuite.Category1.TestSuite1的测试(应运行5个测试)
    3. 来自Project.MainSuite的所有测试,包括子命名空间(应运行6个测试)
    4. 提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我最近遇到了类似的问题,希望得到一个可靠的答案。

对你的问题的简短回答是你不能在没有更明确的情况下做你要求的事。

当您使用--where "test == Project.MainSuite"的where子句(项目中的最高命名空间)运行测试时,它将运行该命名空间和所有子命名空间中的所有测试。

如果使用--where "test == Project.MainSuite.Category1.TestSuite1"的where子句(Project.MainSuite中最低的子命名空间)运行测试,它将只运行该命名空间内的所有测试。

你可以做一些事情来获得你想要完成的事情。

<强> 1。仅从Project.MainSuite.Category1

进行测试

--where "class == Project.MainSuite.Category1.ClassWithTests"

只要明确这个命名空间内的类。 或者,如果您担心将来在此命名空间中添加更多测试,并且不想更新脚本以运行测试。您可以将Category属性添加到此命名空间内的Suites / Tests,并根据该Category运行它们。

--where "cat == TestsInCategory1Namespace"

<强> 2。来自Project.MainSuite.Category1Project.MainSuite.Category1.TestSuite1的测试

对于此方案,您可以将类别和类子句组合在一起。 --where "cat == TestsInCategory1Namespace and class == Project.MainSuite.Category1.TestSuite1"

第3。所有来自Project.MainSuite的测试,包括子命名空间

--where test == Project.MainSuite

答案 1 :(得分:0)

这有帮助吗? Test Selection Language

这适用于类别--where "cat == SmokeTests" --noresult

这适用于命名空间:--where test == "My.Namespace" and cat == Urgent