我正在为一个具有过滤器选项集的应用程序工作,以过滤数据。
我想测试我的方法将要工作的每个输入组合。例如,我必须为每个组合编写单元测试,如下所示:
[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测试。有哪些可能的方法来实现这种测试,哪些是支持组合测试的框架。
是的,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
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)
{
}
}
你还没有给出你想要自动组合的任何例子,所以我不得不为这个答案发明它。
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.
}
找到了这个可用于随机组合测试的库:FsCheck