Модульное тестирование F #: сборка nunit.framework не ссылается на ошибку

Я играю с модульным тестированием в F#. Я использую Visual Studio 2013 Community Edition. Я создал тестовый проект и установил NUnit 2.6.4 и FsUnit 1.3.0.1. Я использовал консоль диспетчера пакетов. Я добавил ссылки на библиотеки в проекте, а в своем файле сценария я сослался на библиотеки DLL и добавил пункты open:

#r @"C:\Users\pw\Documents\Visual Studio 2013\Projects\FSharpForQuantFirst\packages\FsUnit.1.3.0.1\Lib\Net40\FsUnit.NUnit.dll"
#r @"C:\Users\pw\Documents\Visual Studio 2013\Projects\FSharpForQuantFirst\packages\NUnit.2.6.4\lib\nunit.framework.dll" 

open NUnit.Framework
open NUnit.Framework.Constraints
open FsUnit

1 |> should equal 1

В моем коде нет ни ошибок, ни предупреждений. Однако, когда я запускаю код в F # Interactive, последняя строка вызывает следующую ошибку:

Test.fsx(8,6): ошибка FS0074: тип, указанный в 'NUnit.Framework.Constraints.Constraint', определен в сборке, на которую нет ссылки. Вы должны добавить ссылку на сборку 'nunit.framework'.

Но я уже добавил ссылку на nunit.framework.

Я чистил проект, переустанавливал пакеты, удалял и добавлял ссылки, но результат тот же. Я все еще получаю сообщение об ошибке. Любая идея, в чем проблема и как ее решить?


person PiotrWolkowski    schedule 10.02.2015    source источник


Ответы (1)


Если вы могли заметить, есть app.config с привязкой перенаправления для nunit.framework.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.6.4.14350" newVersion="2.6.4.14350" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

F# Interactive не принимает это во внимание, поэтому вы должны использовать NUnit 2.6.3, на который ссылается FsUnit.NUnit.dll.

Понизьте версию NUnit до 2.6.3 и обязательно сбросьте сеанс F# Interactive.

person Max Malook    schedule 10.02.2015
comment
Я удалил NUnit 2.6.4 и установил версию 2.6.3. Но я все еще получаю ту же ошибку... - person PiotrWolkowski; 11.02.2015