Tôi đang cố gắng thiết lập một dự án F # thử nghiệm đơn giản trong linux với mono, sử dụng Forge để thiết lập dự án và cài đặt gói nuget. Forge tạo tệp build.fsx
sử dụng FAKE. Tôi đã cố gắng điều chỉnh tệp xây dựng này (để thêm thử nghiệm) với nguồn cảm hứng từ hướng dẫn này http://fsharp.github.io/FAKE/gettingstarted.html. Tuy nhiên, hướng dẫn này đang sử dụng C# để thử nghiệm và giả định Windows có .Net là môi trường. Tôi muốn sử dụng F # để thử nghiệm và linux với mono là môi trường.Các dự án thử nghiệm đơn vị F # trong linux với mono (FAKE, NUnit 3)
Tôi nghĩ rằng tôi gần như đã làm việc, nhưng tôi nhận được một số thông báo lỗi khó hiểu từ NUnit. Khi chạy file build.fsx
tôi nhận được lỗi sau ở cuối:
...
Invalid argument: -nologo
The value '/home/michel/Documents/FSHARP/UnitTests/test/NUnit.Test.MyTests.dll' is not valid for option '--labels'.
Invalid argument: -xml:./test/TestResults.xml
Running build failed.
Error:
NUnit test failed (255).
---------------------------------------------------------------------
Build Time Report
---------------------------------------------------------------------
Target Duration
------ --------
Clean 00:00:00.0036366
Build 00:00:00.0402828
BuildTest 00:00:00.4911710
Total: 00:00:00.7494956
Status: Failure
---------------------------------------------------------------------
1) Fake.UnitTestCommon+FailedTestsException: NUnit test failed (255).
at Fake.NUnitSequential.NUnit (Microsoft.FSharp.Core.FSharpFunc`2 setParams, IEnumerable`1 assemblies) <0x41d27e50 + 0x0039f> in <filename unknown>:0
at [email protected] (Microsoft.FSharp.Core.Unit _arg4) <0x41d27dc0 + 0x0006f> in <filename unknown>:0
at [email protected][a].Invoke (Microsoft.FSharp.Core.Unit unitVar0) <0x41cd59b0 + 0x00023> in <filename unknown>:0
at Fake.TargetHelper.runSingleTarget (Fake.TargetTemplate`1 target) <0x41ccb490 + 0x000ca> in <filename unknown>:0
tập tin build.fsx
tôi trông như thế
// include Fake libs
#r "./packages/FAKE/tools/FakeLib.dll"
open Fake
// Directories
let buildDir = "./build/"
let testDir = "./test/"
// version info
let version = "0.1" // or retrieve from CI server
// Targets
Target "Clean" (fun _ ->
CleanDirs [buildDir; testDir]
)
Target "Build" (fun _ ->
//MSBuildDebug buildDir "Build" appReferences
!! "/UnitTesting/*.fsproj"
|> MSBuildRelease buildDir "Build"
|> Log "AppBuild-Output: "
)
Target "BuildTest" (fun _ ->
!! "src/NUnit.Test.MyTests/*.fsproj"
|> MSBuildDebug testDir "Build"
|> Log "TestBuild-Output: "
)
Target "Test" (fun _ ->
!! (testDir + "/NUnit.Test.MyTests.dll")
|> NUnit (fun p ->
{ p with
ToolPath = "packages/NUnit.ConsoleRunner/tools"
//DisableShadowCopy = true;
OutputFile = testDir + "TestResults.xml" })
)
Target "Default" (fun _ -> trace "HEEEELLOOOOOO world from FAKE!!!")
"Clean" ==> "Build" ==> "BuildTest" ==> "Test" ==> "Default"
RunTargetOrDefault "Default"
GIẢ này dường như được tìm kiếm một tập tin nunit-console.exe
dưới thư mục packages/NUnit.ConsoleRunner/tools
, nhưng có không có tập tin. Tuy nhiên, có một tệp nunit3-console.exe
, vì vậy tôi vừa tạo một bản sao của tệp này với tên nunit-console.exe
.
đơn giản tập tin thử nghiệm của tôi NUnit.Test.MyTests.fs
trông giống như sau:
namespace NUnit.Test.MyTests
module testmodule =
open NUnit.Framework
let SayHello name = "Hello"
[<TestFixture>]
type myFixture() =
[<Test>]
member self.myTest() =
Assert.AreEqual("Hello World!", SayHello "World")
và file test/NUnit.Test.MyTests.dll
dường như được tạo ra tốt.
Thông báo lỗi khó hiểu có nghĩa là gì và làm cách nào để khắc phục sự cố để tôi có thể chạy thử nghiệm của mình?
FAKE có chức năng 'NUnit3' cũng như chức năng' NUnit'. NUnit thay đổi khá nhiều giữa 2 và 3, và bạn không thể chỉ sao chép 'nunit3-console.exe' và đổi tên nó và mong đợi mọi thứ hoạt động. Hãy thử sử dụng chức năng 'NUnit3' của FAKE và bạn sẽ nhận được kết quả tốt hơn. – rmunn