输入组合的单元测试

问题描述 投票:-1回答:4

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

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

[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测试。有哪些可能的方法来实现这种测试,哪些是支持组合测试的框架。

c# unit-testing nunit xunit
4个回答
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
投票

Nunit肯定有可能:

[TestFixture]
    public class Data_Should_Filter
    {
        [Test]
        [TestCase(new Product(1), new Category(2), DateTime.UtcNow)]
        [TestCase(new Product(2), new Category(2), DateTime.UtcNow)]
        public void TestFilter(Product product, Category category, DateTime creationDate)
        {

        }
    }

1
投票

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

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

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

生成上述值的组合:* CombinatorialAttribute(如果您不使用任何内容,则此默认值为此选项)* PairwiseAtribute * SequentialAttribute

例...

[Test]
public void TestProcuctAndCategory(
    [Values("ProductA", ProductB")] string productName,
    [Values("Cat1", "Cat2", "Cat3")] string category)
{
    // Test will be executed six times, using all combinations
    // of the values provided for the two arguments.
}

-1
投票

找到了这个可用于随机组合测试的库:FsCheck

© www.soinside.com 2019 - 2024. All rights reserved.