Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Testování je pro téměř všechny typy aplikací důležité – umožňuje ověřit, že vaše aplikace funguje správně, a zajistí, že se okamžitě dozvíte, pokud se její chování v budoucnu zhorší. Vzhledem k tomu, že testování může ovlivnit návrh kódu, důrazně doporučujeme naplánovat testování včas a zajistit dobré pokrytí při vývoji vaší aplikace. Tato úvodní část obsahuje rychlý přehled různých testovacích strategií pro aplikace využívající EF Core.
Zapojení databáze (nebo ne)
Při psaní testů pro aplikaci EF Core je jedním ze základních rozhodnutí, které musíte udělat, jestli vaše testy budou zahrnovat produkční databázový systém – tak jako vaše aplikace – nebo jestli se testy spustí proti testovacímu dvojníku, který nahradí produkční databázový systém. Dva významné příklady dvojitých testů v kontextu EF Core jsou režim SQLite v paměti a zprostředkovatel v paměti.
Podrobné porovnání a analýza různých přístupů najdete v tématu Volba testovací strategie. Níže je stručný bodový přehled, který vám pomůže seznámit se s různými možnostmi:
- Vývojáři se často vyhýbají testování v produkčním databázovém systému, protože věří, že je to obtížné nebo pomalé. To není v našich zkušenostech vždy pravdivé a doporučujeme poskytnout tento přístup šanci: Testování v produkčním databázovém systému poskytuje techniky pro spolehlivé a efektivní provedení tohoto postupu. K zajištění toho, aby vaše aplikace skutečně fungovala s produkční databází, je obvykle nutné psát alespoň některé testy pro vaši databázi. Testy, které databázi neobsahují, můžou být omezené na to, co vám umožní testovat (viz níže).
-
Zprostředkovatel v paměti nebude v mnoha důležitých ohledech fungovat jako skutečná databáze. Některé funkce se s ní nedají testovat vůbec (např. transakce, nezpracované SQL.), zatímco jiné funkce se můžou chovat jinak než v produkční databázi (např. citlivost na velká a malá písmena v dotazech). I když může práce v paměti dobře fungovat pro jednoduché a omezené scénáře dotazů, má své limity a nedoporučujeme jeho použití.
- Napodobování
DbSetpro dotazování je složité a obtížné a má stejné nevýhody jako přístup v paměti; zároveň to důrazně nedoporučujeme.
- Napodobování
- Režim SQLite v paměti nabízí lepší kompatibilitu s produkčními relačními databázemi, protože SQLite je sám o sobě plnohodnotnou relační databází. Stále ale budou existovat některé důležité nesrovnalosti mezi SQLite a produkční databází a některé funkce se nedají testovat vůbec (např. metody specifické pro poskytovatele v EF. Funkce).
- Pro testovací přístup, který umožňuje použít spolehlivý test double pro všechny funkce produkčního databázového systému, je možné zavést vrstvu úložiště ve vaší aplikaci. To vám umožní zcela vyloučit EF Core z testování a plně napodobení úložiště; Tím se však mění architektura vaší aplikace způsobem, který by mohl být významný, a zahrnuje větší náklady na implementaci a údržbu.
Další četba
Podrobnější informace najdete v tématu Volba testovací strategie. Pokyny k implementaci a ukázky kódu najdete v tématu Testování v produkčním databázovém systému a testování bez produkčního databázového systému.