代码之家  ›  专栏  ›  技术社区  ›  Lasse V. Karlsen

nunit和testcaseattribute,参数可以交叉连接?

  •  12
  • Lasse V. Karlsen  · 技术社区  · 16 年前

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

    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)
    

    看起来不是这样,但也许我忽略了一些东西?

    1 回复  |  直到 16 年前
        1
  •  13
  •   Bojan Resnik    16 年前

    努尼特提供了 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
    )
    {
        ...
    }