gpt4 book ai didi

c# - 带有 NUnit 和 AutoData 的 AutoFixture 抛出 TargetParameterCountException

转载 作者:太空狗 更新时间:2023-10-29 23:21:16 25 4
gpt4 key购买 nike

在我的单元测试项目中,我安装了 AutoFixture (v3.40.0)、NUnit (v2.6.4.) 和 AutoFixtrue.NUnit2(v3.39.0)。
我在其中一个虚拟测试用例上使用了 AutoData 属性

[Test, AutoData]
public void IntroductoryTest(
int expectedNumber)
{

}

,但是在运行测试时我得到了

System.Reflection.TargetParameterCountException : Parameter count mismatch.
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()
at NUnit.Core.TestMethod.RunTestCase(TestResult testResult)

是否有什么我没有安装或丢失的东西?

最佳答案

该异常是由 NUnit 未加载 AutoFixture 引起的 add-in 在运行时,因此测试参数不会获得任何参数。

原因是AutoFixture.NUnit2针对版本 2.6.2 编译所以如果你想将它与 2.6.4 一起使用你必须添加以下 assembly binding redirects到您的测试项目的配置文件:

<configuration>
<runtime>
<dependentAssembly>
<assemblyIdentity
name="nunit.core.interfaces"
publicKeyToken="96d09a1eb7f44a77"
culture="neutral" />
<bindingRedirect
oldVersion="0.0.0.0-2.6.4.14350"
newVersion="2.6.4.14350" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="nunit.core"
publicKeyToken="96d09a1eb7f44a77"
culture="neutral" />
<bindingRedirect
oldVersion="0.0.0.0-2.6.4.14350"
newVersion="2.6.4.14350" />
</dependentAssembly>
</runtime>
</configuration>

请注意,您需要重定向到的 NUnit 版本是测试运行器使用的版本,它可能与编译期间使用的版本不同。 p>

因此,当您可能针对版本 2.6.4 编译测试时, 如果你的测试运行器使用版本 2.6.3 , 那么你需要重定向到 2.6.3相反:

<configuration>
<runtime>
<dependentAssembly>
<assemblyIdentity
name="nunit.core.interfaces"
publicKeyToken="96d09a1eb7f44a77"
culture="neutral" />
<bindingRedirect
oldVersion="0.0.0.0-2.6.3.13283"
newVersion="2.6.3.13283" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="nunit.core"
publicKeyToken="96d09a1eb7f44a77"
culture="neutral" />
<bindingRedirect
oldVersion="0.0.0.0-2.6.3.13283"
newVersion="2.6.3.13283" />
</dependentAssembly>
</runtime>
</configuration>

关于c# - 带有 NUnit 和 AutoData 的 AutoFixture 抛出 TargetParameterCountException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35599398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com