我在尝试使用nunit2任务执行测试时遇到此错误
执行测试失败。如果您的汇编不是使用NUnit版本2.6.0.12051构建的,那么请确保您已重定向汇编绑定
我的测试项目的nunit版本是2.6.2.12296。
我在我的测试项目配置文件中测试了几个重定向绑定,但没有做到这一点。我知道我可以使用EXEC
直接运行nunit.exe而不是使用nunit2任务,但我想让它工作。
更新
这是我当前测试项目的app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="nunit.framework" publicKeyToken="96d0234a77" culture="Neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.0.12051" newVersion="2.6.2.12296" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
更新2
这是构建文件的相关部分
<nunit2>
<test
assemblyname="D:\[the full path]\UnitTests.dll"
appconfig="D:\customTest.config"/>
<formatter type="Plain"/>
</nunit2>
答案 0 :(得分:3)
当您使用NAnt NUnit2任务时,如果测试框架的版本与构建NAnt的版本不匹配,则必须告知NAnt NUnit2任务使用绑定重定向。
问题是NUnit测试运行器为每个测试创建一个新的AppDomain,因此您无法使用测试项目的app.config进行绑定重定向。
您必须使用绑定重定向创建自定义配置文件:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="nunit.framework" publicKeyToken="96d0234a77" culture="Neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.2.12051" newVersion="2.6.2.12296" />
</dependentAssembly>
</assemblyBinding>
</runtime>
告诉NUnit2 NAnt任务使用它:
<nunit2>
<test assemblyname="ProjectName.Tests.dll" appconfig="customTest.config" />
...
</nunit2>
-------------- 最后的想法 ------------------------ ------
你的配置是:
<bindingRedirect oldVersion="0.0.0.0-2.6.0.12051" newVersion="2.6.2.12296" />
尝试
<bindingRedirect oldVersion="0.0.0.0-2.6.2.12296" newVersion="2.6.2.12296" />
并仔细检查测试项目的所有外部引用是否在visualstudio属性窗口中为copy local=true
答案 1 :(得分:2)
<bindingRedirect>
添加到.config中
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="nunit.framework" publicKeyToken="96d0234a77" culture="Neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.2.12051" newVersion="2.6.2.12296" />
</dependentAssembly>
</assemblyBinding>
</runtime>
或者使用Nant <exec>
,如:
<exec program="${LibraryPath}\NUnit\2.6.2\nunit-console.exe">
<arg value="${SourcePath}\ProjectName.Tests\bin\Release\ProjectName.Tests.dll" />
</exec>
答案 2 :(得分:1)
我遇到了同样的问题。
我的解决方案是将平台从x86更改为Any CPU。 似乎nunit在不同平台上存在问题。
迎接