Я пытаюсь настроить базовый проект FAKE F #, который может запускать FsUnit, но я не могу понять, как решить ошибки Method not found: 'Void FsUnit.TopLevelOperators.should(Microsoft.FSharp.Core.FSharpFunc`2<!!0,!!1>, !!0, System.Object)'
.
Я прочитал следующие сообщения, которые кажутся связанными, но я, по-видимому, все еще не понимаю:
- Основная проблема github
- рекомендации по упаковке FSharp.Core
- FsUnit не удалось протестировать переносимая библиотека (SO)
- Еще одна проблема с github
Я создал проект библиотеки JunkTest
со следующей настройкой:
пакет.зависимости
source https://www.nuget.org/api/v2
nuget FAKE
nuget FSharp.Core
nuget FsUnit
nuget NUnit
nuget NUnit.Console
пакет.ссылки
FSharp.Core
FsUnit
NUnit
JunkTest.fs
module JunkTest
open FsUnit
open NUnit.Framework
[<Test>]
let ``Example Test`` () =
1 |> should equal 1 // this does not work
//Assert.That(1, Is.EqualTo(1)) // this works (NUnit)
build.fsx (соответствующая часть)
Target "Test" (fun _ ->
!! (buildDir + "JunkTest.dll")
|> NUnit3 (fun p ->
{p with OutputDir = "TestResults" }
)
)
Вывод
Я вижу, что FSharp.Core.dll копируется из локальной директории packages
: Copying file from "c:\Users\dangets\code\exercism\fsharp\dgt\packages\FSharp.Core\lib\net40\FSharp.Core.dll" to "c:\Users\dangets\code\exercism\fsharp\dgt\build\FSharp.Core.dll".
И исполнение nunit3-консоли: c:\Users\dangets\code\exercism\fsharp\dgt\packages\NUnit.ConsoleRunner\tools\nunit3-console.exe "--noheader" "--output=TestResults" "c:\Users\dangets\code\exercism\fsharp\dgt\build\JunkTest.dll"
Я попытался добавить файл app.config
с корневым каталогом тестового проекта со следующим, но это, похоже, не решает проблему (ПРИМЕЧАНИЕ. Я не использую Visual Studio - нужно ли мне делать что-то особенное, чтобы проект включал файл app.config
?):
<?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>
</assemblyBinding>
</runtime>
</configuration>
Любая помощь приветствуется.
EDIT: Решение заключалось в том, что я неправильно настроил файл App.config
для включения в сборку. Все ответы, в которых говорилось «просто добавьте это в свой файл App.config
», мне не помогли, потому что VSCode не добавляет это в файл fsproj
автоматически.
Часть, которую я добавил:
<None Include="App.config" />
В ItemGroup
, содержащем остальные <Compile Include=Foo.fs>
строк.
app.config
в файлfsproj
? - person Fyodor Soikin   schedule 24.01.2017app.config
, но чего я не мог найти в этом дубликате или где-либо еще, так это того, как правильно включить файлapp.config
в сборку. Как я уже говорил в вопросе, я не использую Visual Studio, поэтому мне помогла информация об этом, которая должна быть вfsproj
. - person Danny G   schedule 24.01.2017