NUnit测试用例创建

时间:2015-05-14 12:11:54

标签: c# nunit

我已经创建了如下的测试套件。

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

我已经传递了变量m = 10,n = 2和o = 5。

但第二个测试用例无法访问。它会引发以下错误。 “属性参数必须是属性参数类型”

的常量表达式,typeof表达式或数组创建表达式

如何在测试用例中传递变量名而不是值。

2 个答案:

答案 0 :(得分:1)

不幸的是,除非它们是常量,否则不能将变量传递给测试用例。

答案 1 :(得分:0)

正如nickmkk所提到的,变量必须是常数。

如果您不需要,则无需传递第二个属性。如果你这样做,你在测试和attribute中传递相同的类型。它将按顺序读取参数。

[TestCase(12, 4, 3)]
[TestCase(10, 5, 1)]
public void DivideTest(int n, int d, int q)
{
  Console.WriteLine("n={0}, d={1}, q={2}", n, d, q);
  Assert.AreEqual(q, n / d);
}
  

打印

     

第一轮:预期:1     但是:2

     

at NUnit.Framework.Assert.That(Object actual,IResolveConstraint expression,String message,Object [] args)      at NUnit.Framework.Assert.AreEqual(Int32 expected,Int32 actual)      在ImplicitVsExplicitTest.cs中的Test.Test.DivideTest(Int32 n,Int32 d,Int32 q):第22行   n = 10,d = 5,q = 1

     

第二轮   n = 12,d = 4,q = 3