MSTest na .NET Core - Jak na to?

Tomáš Herceg       26.09.2016       C#, .NET       10414 zobrazení

Na DotVVM právě dokončujeme migraci na .NET Core a důležitou součástí jsou testy. Potřebujeme testovat různé kombinace, protože potřebujeme podporovat velký .NET Framework, Mono i .NET Core, a zároveň je kromě nového ASP.NET hlavní platformou OWIN.

A samozřejmě to potřebujeme testovat jak na Windows, tak na Linuxu a Mac OS. Máme testy na framework samotný (unit a integrační testy), a pak máme mnoho UI testů v Seleniu, které otevřou prohlížeč, fyzicky klikají do stránky a kontrolují, že se děje to, co by se dít mělo.

 

Z historických důvodů jsme používali MSTest, což sklízelo u některých lidí udivené reakce, že jako proč ne xUnit a kdesi cosi. V reálu mě mnohem víc pálí to, že máme testů stovky, přičemž bychom jich měli mít tisíce.

Nicméně, Microsoft po letech nečinnosti s MSTestem konečně začal něco dělat, a díky tomu je možné napsat testy tak, aby běžely jak na plném .NETu, tak i na .NET Core.

 

Předpokládejme, že testovaná aplikace je Class Library, která podporuje platformy net461 (plný .NET 4.6.1) a netcoreapp1.0 (tedy .NET Core), a chceme k ní udělat testy.

Je potřeba udělat následující kroky:

 

1. Přidáme do solution nový projekt typu Console Application (.NET Core).

Přidání konzolové aplikace pro testy

 

2. Smažeme z ní Program.cs a z project.json vymažeme “emitEntryPoint”: “true”.

3. Přidáme následující Nuget balíčky (v project.json do sekce dependencies):

- "MSTest.TestFramework": "1.0.1-preview" (samotný testovací framework)

- "dotnet-test-mstest": "1.1.1-preview" (test runner, který řekne VS, jak má testy hledat, a umožní je spustit z command line)

 

4. Dále je samozřejmě nutné nareferencovat testovaný projekt, takže do sekce dependencies přidáme ještě toto:

"MsTestDemo.App": {
      "target": "project"
    }

 

5. Dále je třeba přidat pod version ještě tuto klauzuli:

"testRunner": "mstest"

 

Nyní stačí napsat samotné testy a projekt by měl jít normálně zkompilovat.

Testy by měly jít spustit jak z okna Test Explorer, tak z příkazového řádku pomocí volání dotnet test. Spustí se na všech platformách, které jsou specifikované v project.json.

 

Pro demonstraci jsem připravil ukázkový projekt.

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Příspěvky zaslané pod tento článek se neobjeví hned, ale až po schválení administrátorem.

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

Příspěvky zaslané pod tento článek se neobjeví hned, ale až po schválení administrátorem.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback