Na obsah stránky

Unit testování v F#

Aleš Roubíček | | # permalink

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í!

Našli jste v článku chybu? Máte námět na reportáž? Založte mi ticket.