FSharp.xUnit
1.2.11
See the version list below for details.
dotnet add package FSharp.xUnit --version 1.2.11
NuGet\Install-Package FSharp.xUnit -Version 1.2.11
<PackageReference Include="FSharp.xUnit" Version="1.2.11" />
paket add FSharp.xUnit --version 1.2.11
#r "nuget: FSharp.xUnit, 1.2.11"
// Install FSharp.xUnit as a Cake Addin #addin nuget:?package=FSharp.xUnit&version=1.2.11 // Install FSharp.xUnit as a Cake Tool #tool nuget:?package=FSharp.xUnit&version=1.2.11
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
缺少结构化比较的方法,这个代码示例演示如何定义适配器:
let tryGetJProperty (ty: Type) =
if ty = typeof<JProperty> then
Some(fun (loop:Type -> IEqualityComparer) ->
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|]
})
else None
let tryGetJToken (ty: Type) =
if typeof<JToken>.IsAssignableFrom ty then
Some(fun (loop:Type -> IEqualityComparer) ->
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)
})
else None
let should = EqualConfig.``override``[
tryGetJProperty
tryGetJToken
]
注意派生类要放到基类的上面,否则派生类数据就会进到基类适配器,派生类适配器被旁路掉了。
获得了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
SingleDataSource
单参数数据源
SingleDataSource
向构造函数提供一个键值对列表,成员dataSource
提供给MemberData
特性,索引属性提供不在参数表的额外数据。
使用方法:.\FSharp.xUnit.Test\SingleDataSourceTest.fs
TupleDataSource
多参数数据源
使用方法:.\FSharp.xUnit.Test\TupleDataSourceTest.fs
ArrayDataSource
变长参数数据源
使用方法:.\FSharp.xUnit.Test\ArrayDataSourceTest.fs
ClassDataBase
open FSharp.xUnit
type MyArrays1() =
inherit ClassDataBase([
[| 3; 4 |];
[| 32; 42 |]
])
type ClassDataBaseTest(output:ITestOutputHelper) =
[<Theory>]
[<ClassData(typeof<MyArrays1>)>]
member _.v1 (a : int, b : int) =
Assert.NotEqual(a, b)
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. |
-
.NETStandard 2.0
- FSharp.Core (>= 7.0.400)
- FSharp.Idioms (>= 1.3.2)
- FSharp.Literals (>= 2.2.14)
- xunit.assert (>= 2.5.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 | 179 | 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 |
update nuget