【问题标题】:nunit where condition for categoriy not being set未设置类别条件的 nunit
【发布时间】:2021-05-10 09:17:13
【问题描述】:

我的测试类中有一堆测试用例:

[TestFixture]
class MyTestClass
{
    [Test]
    public void Test1() { ... }

    [Test(Category = "MyCategory")]
    public void Test2() { ... }
}

我现在想要实现的是只运行没有使用nunit-console 设置类别的测试。所以在我的示例中,只有 Test1 应该运行。

nunit3-console.exe MyAssembly.dll where "cat == null"

我也试过"cat == ''",结果相同。

但是,这不会给我任何测试。当然我可以在这个人为的例子中使用"cat != 'MyCategory'",但是由于我有很多类别,我不想排除每个类别,而是只选择那些没有任何类别的。

【问题讨论】:

  • 你试过cat !~ '.+'吗?
  • @KlausGütter 哇,一个用于简单空值检查的正则表达式。不过,它完成了它的工作。但是我无法想象这是唯一的方法。
  • 确实如此。但是看看source 中的Match 方法:缺少的类别将被评估为假,因此需要否定。

标签: c# nunit nunit-3.0 nunit-console


【解决方案1】:

查看source 中的 Match 方法显示:缺少的类别将被评估为假。

所以条件必须包含一个否定。正如您已经观察到的,"cat != 'MyCategory'" 将包括没有类别的测试,但将包括具有“MyCategory”以外的类别的测试。

要排除所有具有 any 类别的测试,您可以使用!~ 运算符(正则表达式不匹配),例如

where "cat !~ '.+'"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2022-12-15
    • 2011-02-07
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多