4

我在尝试使用 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>
4

3 回答 3

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" />

并仔细检查您的测试项目的所有外部引用是否都copy local=true在 visualstudio 属性窗口中

于 2013-11-13T17:46:48.973 回答
2

按照NUnit 文档中的说明添加<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>
于 2013-11-08T12:39:23.520 回答
1

我有同样的问题。

我的解决方案是将平台从 x86 更改为 Any CPU。似乎 nunit 在不同平台上存在问题。

问候

于 2013-11-21T13:05:09.800 回答