Proč se vyplatí postavit CI/CD pipeline na GitHub Actions?
본문
Vyberte si jednu konkrétní funkci, která nemá vedlejší efekty, nekomunikuje se sítí ani s databází. Dobrým kandidátem je výpočet, převod jednotek, validace formátu nebo čistě transformační logika. Pro první test si nechte složitější závislosti na později. Otevřete soubor s testy a napište tři věci: přípravu vstupu, zavolání testované funkce a ověření výsledku. Těmto částem se říká arrange, act, assert a jejich pořadí udržujte vždy stejné.
Po spuštění se dostaví nejistota, zda test skutečně něco testuje. Ověřte to jednoduše: dočasně rozbijte testovanou funkci, například změňte návratovou hodnotu, a pusťte test znovu. Pokud nezačne selhávat, test neověřuje nic užitečného. Potom změnu vraťte zpět. Tento krok mnozí vynechávají a později se diví, že testy procházejí i při zjevné chybě.
Izolace testů je důležitější než počet assertů. Každý test by měl být nezávislý na ostatních, pořadí spuštění nesmí ovlivnit výsledek. Nepoužívejte sdílené statické proměnné ani soubory, které zůstávají mezi testy. Pokud test zapisuje do souboru, ukliďte ho v [TearDown]. NUnit ve výchozím nastavení spouští testy paralelně, což odhalí skryté závislosti. Paralelismus můžete vypnout atributem [NonParallelizable], ale lepší je testy navrhnout tak, aby šly spouštět současně.
Asserty a izolace: kde se láme disciplína Základní tvrzení se píše přes Assert.That, například Assert.That(vysledek, Is.EqualTo(4)). Vyhněte se starším metodám jako Assert.AreEqual, jsou méně čitelné a v novějších verzích se mohou lišit. Pro výjimky použijte Assert.Throws nebo Assert.That(() => kód, Throws.TypeOf()). Častá chyba je testovat více věcí v jednom testu. Když jeden test ověřuje výpočet i formát výstupu, jeho selhání vám neřekne, co je špatně. Rozdělte tvrzení do více testů nebo použijte Assert.Multiple, pokud opravdu chcete vidět všechna selhání najednou.
Nakonec testy spouštějte často, ideálně po každé změně kódu. Jeden test není důkaz správnosti, ale je to začátek. Až jich budete mít víc, začnou odhalovat regrese – situace, kdy nová změna rozbije něco, co dříve fungovalo. První unit test není o dokonalosti, ale o návyku ověřovat vlastní práci. Napište jeden, pusťte ho a teprve pak řešte, co dál.
Z dlouhodobého hlediska je lepší vsadit na formáty, které mají širokou podporu a jasná pravidla. Ušetříte čas sobě i kolegům, kteří budou projekt přebírat. B3 může na první pohled vypadat jednoduše, ale jeho nevýhody převažují. Pokud se mu můžete vyhnout, udělejte to.
NUnit je knihovna pro testování jednotek v .NET, která stojí na atributech a očekáváních. Začnete tím, že do testovacího projektu přidáte balíček NUnit a NUnit3TestAdapter, případně i Microsoft.NET.Test.Sdk. Vše se dělá přes správce balíčků nebo příkazovou řádku. Testovací projekt by měl být samostatný, nikdy nemíchejte testy s produkčním kódem. Pokud používáte novější .NET, ověřte, že cílová verze frameworku odpovídá verzi NUnit, jinak narazíte na chyby při načítání testů.
Když někdo tvrdí, že na úklid a dohledávání nemá čas, obvykle to znamená, že ho stráví stejně, jen neplánovaně a pod tlakem. Skrytá práce se nedá zrušit, pouze odložit. Proto je lepší ji přiznat v odhadu a mít rezervu, https://Analnoe.com/user/HoustonDann/ než ji tajit a slibovat nereálný termín. U složitějších úkolů se vyplatí rozdělit odhad na dvě čísla: dobu soustředěné práce a dobu čekání a režie. Tím se odhalí, kde vzniká největší nejistota.
Testovací třída je veřejná a obsahuje metody označené atributem [Test]. NUnit rozpozná i [TestCase] pro parametrizované testy. Metoda nesmí mít parametry, pokud nejde právě o [TestCase], a musí být veřejná. Typické selhání začátečníka je zapomenutý atribut nebo statická metoda. NUnit testy nejsou statické, potřebuje instanci. Pokud test závisí na datech z databáze, použijte [SetUp] a [TearDown] pro přípravu a úklid, ale pozor na sdílený stav mezi testy.
Základ je funkce, jejíž jméno začíná na test_. Uvnitř použijete běžný assert. pytest si při neúspěchu sám rozparsuje výraz a ukáže konkrétní hodnoty, takže nemusíte psát vlastní chybové zprávy. Soubor pojmenujte test_*.py, jinak ho sběrač testů ignoruje. Spuštění je pak jen pytest v kořeni projektu. První past: testy, které něco vypisují na obrazovku, vypadají jako úspěch i při selhání – výstup se totiž nezobrazí, dokud test nespadne.
Pro nasazení používejte oddělený job s podmínkou if: github.ref == 'refs/heads/main', aby se produkční prostředí neaktualizovalo z vývojové větve. Do stejného jobu vložte prostředí (environment) s ochrannými pravidly, která vyžadují schválení před nasazením. Tím zabráníte tomu, aby nechtěný merge automaticky uvedl do provozu rozpracovanou změnu. Pokud nasazení selže, workflow se zastaví a stav commitu zůstane červený, což je přesně to, co potřebujete vidět.
If you liked this information and you would like to obtain even more info concerning isowindows.net kindly check out our own website.
댓글목록 0
등록된 댓글이 없습니다.