FSharp.xUnit
1.1.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package FSharp.xUnit --version 1.1.0
NuGet\Install-Package FSharp.xUnit -Version 1.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FSharp.xUnit" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FSharp.xUnit --version 1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FSharp.xUnit, 1.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FSharp.xUnit as a Cake Addin #addin nuget:?package=FSharp.xUnit&version=1.1.0 // Install FSharp.xUnit as a Cake Tool #tool nuget:?package=FSharp.xUnit&version=1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
The class library extends xunit
to assert equal.
It output data in F# style.
It's easier to customize the
IEqualityComparer
.
install
Install-Package FSharp.xUnit
GetStarted
使用系统默认的相等比较器:
open FSharp.xUnit
[<Fact>]
let ``My test`` () =
Should.equal 1 1
相反的操作Should.notEqual
使用自定义的相等比较器,先配置比较器,newtonsoft.net是.net流行的json库,但是JProperty
缺少结构化比较的方法,这个代码示例演示如何定义适配器:
type JPropertyEqualityComparerAdapter() =
static member Singleton = JPropertyEqualityComparerAdapter() :> EqualityComparerAdapter
interface EqualityComparerAdapter with
member this.filter ty = ty = typeof<JProperty>
member this.getEqualityComparer(loop,ty) =
let stringComparer = loop typeof<string>
let jTokenEqualityComparer = JTokenEqualityComparer()
{
new IEqualityComparer with
member this.Equals(p1,p2) =
let p1 = unbox<JProperty> p1
let p2 = unbox<JProperty> p2
stringComparer.Equals(p1.Name, p2.Name) && jTokenEqualityComparer.Equals(p1.Value, p2.Value)
member this.GetHashCode(p) =
let p = unbox<JProperty> p
hash [|stringComparer.GetHashCode p.Name; jTokenEqualityComparer.GetHashCode p.Value|]
}
type JTokenEqualityComparerAdapter() =
static member Singleton = JTokenEqualityComparerAdapter() :> EqualityComparerAdapter
interface EqualityComparerAdapter with
member this.filter ty = typeof<JToken>.IsAssignableFrom ty
member this.getEqualityComparer(loop,ty) =
let genericComp = JTokenEqualityComparer()
{
new IEqualityComparer with
member this.Equals(p1,p2) = genericComp.Equals(unbox<JToken> p1,unbox<JToken> p2)
member this.GetHashCode(p) =
genericComp.GetHashCode(unbox<JToken> p)
}
let should = Register.``override``[
JPropertyEqualityComparerAdapter.Singleton
JTokenEqualityComparerAdapter.Singleton
]
注意派生类要放到基类的上面,否则派生类数据就会进到基类适配器,派生类适配器被旁路掉了。
获得了should
,我们就可以进行自定义的测试了,测试的方法和上面的差不多:
[<Fact>]
member this.``translateFields``() =
let y = [JProperty("b",JValue(null:obj));JProperty("a",JValue(0.0))]
let z = [JProperty("b",JValue(null:obj));JProperty("a",JValue(0.0))]
should.equal y z
相反的操作should.notEqual
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. |
.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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- FSharp.Core (>= 5.0.1)
- FSharp.Idioms (>= 1.1.8)
- FSharp.Literals (>= 2.1.4)
- xunit.assert (>= 2.4.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.2.28 | 76 | 10/28/2024 |
1.2.27 | 120 | 5/9/2024 |
1.2.26 | 116 | 3/29/2024 |
1.2.25 | 109 | 3/6/2024 |
1.2.24 | 173 | 1/11/2024 |
1.2.23 | 133 | 1/9/2024 |
1.2.22 | 161 | 12/27/2023 |
1.2.21 | 172 | 11/19/2023 |
1.2.20 | 116 | 11/16/2023 |
1.2.19 | 121 | 11/13/2023 |
1.2.18 | 122 | 11/8/2023 |
1.2.17 | 117 | 11/8/2023 |
1.2.16 | 154 | 11/2/2023 |
1.2.15 | 129 | 11/1/2023 |
1.2.14 | 153 | 11/1/2023 |
1.2.13 | 119 | 10/27/2023 |
1.2.12 | 126 | 10/18/2023 |
1.2.11 | 154 | 9/23/2023 |
1.2.10 | 139 | 9/18/2023 |
1.2.9 | 177 | 7/22/2023 |
1.2.8 | 184 | 7/21/2023 |
1.2.7 | 265 | 3/13/2023 |
1.2.6 | 266 | 3/12/2023 |
1.2.5 | 264 | 3/8/2023 |
1.2.4 | 329 | 12/19/2022 |
1.2.3 | 459 | 5/30/2022 |
1.2.2 | 476 | 3/16/2022 |
1.2.1 | 356 | 10/26/2021 |
1.2.0 | 385 | 10/26/2021 |
1.1.0 | 366 | 3/20/2021 |
1.0.0 | 481 | 9/15/2020 |
It output data in F# style.
It's easier to customize the IEqualityComparer.