Unit testování v F#
|
Začít s unit testování v F# je cekem snadné. Stačí si vytvořit Class Library
a do ní zareferencovat váš oblíbený testovací framework. Ten můj je xUnit.net a jak se ukazuje má to i své výhody.
xUnit.net ve Visual Studiu 2012
Vítanou novinkou nového Visual Studia je podpora i jiných testovacích frameworků než je MsTest. Takže prvním krokem je přidat xUnit provider do Visual Studia 2012. Otevřete si Extensions and Updates
(Ctrl+Q
exte
Enter
) a v Online sekci dejte vyhledat xUnit
. Nainstalujet si xUnit.net runner for Visual Studio 2012. Restartujte Studio.
Nyní můžeme spouštět xUnit.net testy přímo ve Visual Studiu pomocí zkratky Ctrl+R, T
. Doporučuju si zobrazit okno Test Explorer.
FsUnit a xUnit
Takže máme přidanou podporu pro test runner. Teď ještě přidat samotný testovací framework a když už jsme u toho i krapet lepší assertovací framework. Takže si vytvoříme nový projekt typu Class Library. Otevřeme si Package Manager Console (využijte Ctrl+Q
) a doinstalujeme si nuget balíček. Vzhledem k vyřešeným závislostem stačí napsat Install-Package FsUnit.Xunit
a jsme skoro ready. Skoro. FsUnit referencuje FSharp.Core 4.0.0.0
, ale aktuální verze je FSharp.Core 4.3.0.0
, proto do konzole napíšeme ještě Add-BindingRedirect *název projektu*
, který zajistí přesměrování na používanou verzi. No a můžeme psát! :)
Co se mi líbí na xUnit.net, je že nemusíte dekorovat testovací třídy a podobné nesmysle. Prostě si vytvoříme modul a rovnou píšeme testy:
module Tests.``ukázka xUnit a FsUnit``
open Xunit
open FsUnit.Xunit
[<Fact>]
let ``Test tautologie`` ()=
assert true
[<Fact>]
let ``Test tautologie v xUnit`` ()=
Asset.True true
[<Fact>]
let ``Test tautologie v FsUnit`` ()=
true |> should be True
První věc, co by vás měla zaujmout, je zápis názvů testovacích metod a modulů pomocí přirozeného jazyka. To je úžasná vlastnost F#, která zpřehledňuje testy. Další poznatek: F# má funkci assert
, což je alias pro System.Diagnostics.Debug.Assert()
, občas se může hodit. Druhý test používá klasické asserty z xUnit.net. Třetí používá DSL FsUnit.
Tak s chutí do testování!