【问题标题】:NUnit and TestCaseAttribute, cross-join of parameters possible?NUnit和TestCaseAttribute,参数的交叉连接可能吗?
【发布时间】:2009-10-23 08:37:33
【问题描述】:

我有一个单元测试可以测试各种情况,如下所示:

public void Test1(Int32 a, Int32 b, Int32 c)

假设我想创建没有循环的测试代码,所以我想使用 TestCase 来指定这样的参数:

[TestCase(1, 1, 1)]
public void Test1(Int32 a, Int32 b, Int32 c)

有这个属性的我可以这样说吗:

  • 对于第一个参数,这里有一组值
  • 对于第二个参数,这里有一组值
  • 对于第三个参数,这里有一组值
  • 现在,测试以上所有组合

即。像这样:

[TestCase(new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 })]
public void Test1(Int32 a, Int32 b, Int32 c)

看起来不像,但也许我忽略了什么?

【问题讨论】:

    标签: c# nunit testcaseattribute


    【解决方案1】:

    NUnit 提供了Values 属性,可以与Combinatorial 属性一起使用来实现:

    [Test, Combinatorial]
    public void Test1( 
        [Values(1,2,3,4)] Int32 a, 
        [Values(1,2,3,4)] Int32 b, 
        [Values(1,2,3,4)] Int32 c
    )
    {
        ...
    }
    

    【讨论】:

    • 那行得通,并且组合显然也是默认值,智能感知文档说,我尝试不使用该特定属性,它的工作方式与您所说的完全一样。非常感谢。
    • @LasseV.Karlsen 除了Values 属性,Range attribute 也可以以相同的方式使用。可以将它们指定为范围,而不是显式列出所有值。所以,在你的例子中,你可以用[Range(1,4,1)]代替[Values(1,2,3,4)]
    猜你喜欢
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2021-03-08
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2018-10-04
    相关资源
    最近更新 更多