输入组合的单元测试

时间:2017-07-19 09:57:22

标签: c# unit-testing nunit xunit

我正在为一个具有过滤器选项集的应用程序工作,以过滤数据。

我想测试我的方法将要工作的每个输入组合。例如,我必须为每个组合编写单元测试,如下所示:

[TestClass]
public class Data_Should_Filter
{
    [TestMethod]
    public void _For_Category()
    {

    }

    [TestMethod]
    public void _For_Product_And_Category()
    {

    }

    [TestMethod]
    public void _For_Product_CreationDate()
    {

    }
}

有没有办法用单一测试来测试每种数据组合。我查看了blog的NUnit测试。有哪些可能的方法来实现这种测试,哪些是支持组合测试的框架。

4 个答案:

答案 0 :(得分:2)

是的,可以使用NUnit 2.5及更高版本

[TestCase(12,3,4)]
[TestCase(12,2,6)]
[TestCase(12,4,3)]
public void DivideTest(int n, int d, int q)
{
    Assert.AreEqual( q, n / d );
}

更多信息here

答案 1 :(得分:1)

你没有给出任何你想要自动组合的例子,所以我不得不为这个答案发明它。

NUnit有几种方法可以将数据指定为与测试方法的单个参数相对应的参数,以及组合这些参数的几种方法。

指定参数:  * ValuesAttribute  * ValueSourceAttribute  * RandomAttribute  * RangeAttribute

生成以上值的组合:  * CombinatorialAttribute(如果你不使用任何东西,这个是默认的)  * PairwiseAtribute  * SequentialAttribute

示例...

public class HelloWorldController : Controller
{
    private readonly ITableRepositories _tableRepository;
    public HelloWorldController(ITableRepositories tableRepository)
    {
         _tableRepository = tableRepository;
    }
}

答案 2 :(得分:0)

Nunit肯定有可能:

Warning: Error in dir.create: invalid 'path' argument
Stack trace (innermost first):
    58: dir.create
    57: dirCreate
    56: observerFunc
     1: runApp

答案 3 :(得分:-1)

发现此库可用于随机组合测试: FsCheck