测试除一个特定组合之外的所有参数组合

时间:2017-11-28 14:43:50

标签: c# unit-testing nunit tdd

我想创建测试,测试所有参数组合,排除一个具有不同预期结果的组合。

到目前为止,我已经提出了

[TestCase(false, false, ExpectedResult = false)]
[TestCase(false, true, ExpectedResult = false)]
[TestCase(true, false, ExpectedResult = false)]
[TestCase(true, true, ExpectedResult = true)]
public bool Test(bool paramA bool paramB)
{
    var target = new MyComand(paramA, paramB);
    return target.CanExecute();
}

// this class is made up, but shows the basic concept
public class MyCommand
{
    bool _preConditionA;
    bool _preConditionB;

    public MyCommand(bool preConditionA, bool preConditionB)
    {
            _preConditionA = preConditionA;
            _preConditionB = preConditionB;
    }

    public bool CanExecute()
    {
        if (_preConditionA == false)
            return false;

        if (_preConditionB == false)
            return false;

        return true;
    }
}

或者有些疯狂[TestCaseSource]。 这两个案例对我个人的可读性都有疑问。 当参数不仅是布尔值时,这会变得更复杂。 我检查了[Values][Combinatorical]属性,但它们并不适用于我的案例。

有人知道其他任何解决方法吗?

1 个答案:

答案 0 :(得分:1)

  

有人知道其他任何解决方法吗?

一种可能的解决方案是使用Assumptions跳过组合,其中参数不会产生由测试检查的后置条件。