我已经创建了如下的测试套件。
[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表达式或数组创建表达式如何在测试用例中传递变量名而不是值。
答案 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