AnyUnit.Style.FsUnit
1.3.0
dotnet add package AnyUnit.Style.FsUnit --version 1.3.0
NuGet\Install-Package AnyUnit.Style.FsUnit -Version 1.3.0
<PackageReference Include="AnyUnit.Style.FsUnit" Version="1.3.0" />
<PackageVersion Include="AnyUnit.Style.FsUnit" Version="1.3.0" />
<PackageReference Include="AnyUnit.Style.FsUnit" />
paket add AnyUnit.Style.FsUnit --version 1.3.0
#r "nuget: AnyUnit.Style.FsUnit, 1.3.0"
#:package AnyUnit.Style.FsUnit@1.3.0
#addin nuget:?package=AnyUnit.Style.FsUnit&version=1.3.0
#tool nuget:?package=AnyUnit.Style.FsUnit&version=1.3.0
AnyUnit.Style.FsUnit
FsUnit-style F# assertions for
AnyUnit - x |> should equal y-shaped
assertions, on top of AnyUnit.Constraints'
constraint model. Assertions only - pair this with
AnyUnit.Style.Nunit, or the core's own
AnyUnit.Style.Core, for [<Test>]/[<TestFixture>] discovery.
F#: open order matters
F# has no C# CS0104. When two opened namespaces export the same simple
name the last open wins, silently - no error, no warning. Put the
style's open where it will not be shadowed:
open AnyUnit // exceptions, TestCapabilities, [<RequiresCapability>]
open AnyUnit.Constraints
open AnyUnit.Style.Nunit // the attribute style - LAST
Opening two attribute styles at once (AnyUnit.Style.Nunit and
AnyUnit.Style.Core, say, or .Nunit and .MsTest, which all export an
AssertionHelper) is the case to avoid: whichever comes last provides
[<Test>]/[<TestFixture>], and since each style's own
TestAttribute.TestInvoke is what dispatches that style's [<SetUp>]/
[<TearDown>]/[<Ignore>], picking up the wrong one stops a fixture's
setup and teardown running with nothing to say so. Before 1.3.0 this
could happen by accident, because the core's built-in style shared the
AnyUnit namespace with the exception types; it now lives in
AnyUnit.Style.Core (#66). ComboTests.FSharp/OpenOrder.fs pins it.
Usage
A test fixture derives AssertionHelper (this package's own, not
AnyUnit.Style.Nunit's - both ultimately derive the same core
AnyUnit.Run.AssertionHelper, so its should/shouldFail still resolve
correctly against whichever style's Assert the fixture ends up with)
for the instance-scoped this.should/this.shouldFail:
type MyTests() =
inherit AnyUnit.Style.FsUnit.AssertionHelper()
[<Test>]
member this.``adds two numbers``() =
(2 + 2) |> this.should equal 4
[<Test>]
member this.``throws on bad input``() =
this.shouldFail (fun () -> failwith "boom")
this.printf/this.printfn write to the test's captured Log the same
way Console.printf would write to the console.
Free-function should/shouldFail (no this. receiver) work exactly as
in real FsUnit, including from a module-level [<Fact>] let test with no
this at all: they assert through the running test (AnyUnit.Run. AmbientTest, which the engine sets around every test body), so the
counts are real and a test with no assertion still reports NoError.
Before 1.2.1 they went through the global Assert.GlobalStyle and were
[<Obsolete>] for it; they now only fall back to that outside a running
test.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- AnyUnit (>= 1.3.0)
- AnyUnit.Constraints (>= 1.3.0)
- FSharp.Core (>= 6.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.