Nunit Combinatorial抛出TargetParameterCountException

时间:2016-08-22 10:15:58

标签: c# nunit

我有这样的测试:

[Test, Combinatorial]
public void SomeTest(
        [Values(false, true)] bool flag,
        [Values(2, 5)] int someValue))
{
     var entity = new SomeClass();
     entity.Flag = flag;
     entity.SomeValue = someValue;
     var context = entity.GetContext();

     Assert.AreEqual(context.SomeValue, entity.SomeValue);
}

当我尝试运行测试时,它会抛出TargetParameterCountException。 StackTrace:

at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at NUnit.Core.Reflect.InvokeMethod(MethodInfo method, Object fixture, Object[] args)
at NUnit.Core.TestMethod.RunTestMethod(TestResult testResult)
at NUnit.Core.TestMethod.RunTestCase(TestResult testResult)

有什么问题?我使用Nunit 3.4.1和VS 2012。 简单的测试效果很好。

1 个答案:

答案 0 :(得分:1)

您的代码很好,使用NUnit 3 Visual Studio适配器可以正常运行。基于callstack,您尝试在较旧的基于NUnit 2的适配器中运行代码。它是旧版本的Resharper或旧版本的NUnit Visual Studio Extension,在更新之前不会运行NUnit 3测试。

安装NUnit 3 Visual Studio adapter并尝试一下。如果您使用的是Resharper,则需要支付更新费用。

另外,pro-tip,您不需要在bool或枚举的属性中包含值,所有值都将自动注入。您也不需要Test属性。

以下是我的示例的简化版

[Combinatorial]
public void SomeTest([Values] bool flag, [Values(2, 5)] int someValue)
{
    TestContext.WriteLine($"{flag} - ${someValue}");
}

Visual Studio Adapter中的结果,

enter image description here