• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    BUTHRAKAUR: Tak ja ten MSTest zacal pouzivat, pac je rovnou built-in ve VS a nemusime nic dalsiho resit. Na tech projektech dela vic lidi, nektery i jen na castecnej uvazek, tak to je celkove jednodusi. Ale pokud mi neco jinyho (treba ten xUnit) prinese vyrazne vic uzitku, nemam problem s prechodem.

    Hlavne bych teda uvital nejaky lepsi assertovani. Hlavne u assertovani podminek u kolekci/json/xml.
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    TENCOKACISTROMY: to oddeleni a treba i spousteni jen jednou za cas je urcite vhodny - muzes pouzit TestCategory atribut. MSTest by s timhle konkretne problem mit nemel, ale jinak jestli mas moznost, tak zvaz prechod na ten xUnit nebo neco jinyho, pze MSTest ma problemy napr s nekterejma app.config specialitama, ty DeploymentItem jsou taky docela zlo a celkove je to takovej chudej test framework ve srovnani s konkurenci - neni moc duvod to pouzivat. Pokud to teda nenadiktuje nejakej managor apod :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    DR_Z: Mate i automaticky testy na UI, jo? *zavist* :)
    DR_Z
    DR_Z --- ---
    TENCOKACISTROMY: My jsme integracni testy s MSTest + DB provozovali a nebyl s tim problem. Nedavno jsme zmigrovali na xUnit, ale to nebyla otazka vykonu jako spis extensibility.
    Oddelit unit a integracni (a UI) testy dava urcite dobrej smysl
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    BUTHRAKAUR: No, ona to neni uplne WS. Komunikuje to protobufem primo s tou databazi. Volaji se navzajem v ruznejch connections a izolacnich levelech. Ono to je docela slozity - to tu asi nema smysl do podrobna rozebirat. Slo mi s pis o to, jestli to nekdo na tohle pouziva a jestli s tim ma nekdo dobry/spatny zkusenosti. Treba na co jsem narazil ja je to - ze tyhle testy narozdil od unit testu docela dlouho trvaj (rekneme, ze jeden test pobezi minimalne 10 vterin. spis vic - tak dlouho to vsechno skutecne trva). Takze na integracni testy bych si mel udelat nejspis zvlast projekt, aby se mi nepletly mezi unit testama a nebrzdil mi vyvoj.
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    TENCOKACISTROMY: asi nepsal. Ja to myslel spis obecne - ze psat test az po psani logiky nedava uplne smysl a test pak casto vypada zbytecne.. a nakonec i tak trochu zbytecnej je :)

    TENCOKACISTROMY: neznam presne to tvoje prostredi, ale pokusil bych se izolovane testovat to volani WS a oddelene tu DB cast. Kazdopadne s klasickym pristupem, kdy mas otevrenou transakci pres test a pak rollbacknes bys nemel mit poblem myslim. Druha vec je, kde vezmes tu testovaci DB - to nevim, jestli mas vyreseny, resp. jestli je to soucasti otazky..
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    BUTHRAKAUR: Mam spis koncepcni problem. Jde o to, ze vlastne cely to prostredi se mi z jedny tridy a par objektu rozroste na DB a sitovou sluzbu. Pricemz potrebuju otestovat X situaci, a nektery jsou typu vytvorit pocatecni situaci, nechat spocitat a zapsat, upravit situaci (simulace vstupu od uzivatele), spocitat a zapsat (jeste treba dvakrat). Vysledny data by mely byt zhruba XY.

    A to vsechno bych byl rad, aby se setupovalo nejak rozumne rychle a aby mi to netimeoutovalo na dlouho bezici test apod...
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    BUTHRAKAUR: Cili na takovejhle kus kodu bys psal test?
    clas BlaBlaBlaConverter : IValueConverter {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
            return (value as bool?).GetValueOrDefault() ? 1 : 0;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
             return (value as int?).GetValueOrDefault() == 0 ? false : true;
        }
    }

    BUTHRAKAUR
    BUTHRAKAUR --- ---
    TENCOKACISTROMY: integracni MSTesty proti DB + WS pouzivam. Co s tim mas konkretne za problem? Ja jen nesnasim MSTest a jeho nedomyslenosti, ale jinak vsechno beha :)
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    NECROMAN: tak ono to takhle na prvni pohled vypada, ze je test zbytecnej.. Kdo ale pise testy az po tom, co napise testovanou logiku, tak to dela spatne ;) A samozrejme to pak casto pusobi zbytecne/dementne.

    Jinak na lepsi pochopeni testu byla prednaska T.Hercega IMO naprosto k nicemu a misty i zavadejici, co si tak matne vzpominam. Osobne doporucuju http://srazy.info/coderetreat/2638 , ktery se blizi milovymi kroky.
    H_U_N_T_E_R
    H_U_N_T_E_R --- ---
    Kdo jdete na MS Fest afterparty, byla spuštěna závazná registrace, uzávěrka je v pondělí, takže moc času nezbývá:
    Microsoft Fest 2012 | Registrace na afterparty
    http://www.ms-fest.cz/Afterparty.aspx
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    MICTECH: Tak takovejch veci je vic zejo. Treba On[EventName], jednoduchy konstruktory, atd...

    Kdyz bych si mel psat testy uplne na vsechno, tak bych nejspis z vetsi casti opustil imperativni jazyky a zacal pouzivat nejakej deklarativni zapis. Mnozstvi napsanyho kodu (= mist, kde muzu udelat bug) by se vyrazne snizil.
    MICTECH
    MICTECH --- ---
    TENCOKACISTROMY: Zalezi jak ma clovek nastavene filtery na Code Coverage :)

    Samozrejmne do Code Coverage se nepocitaji get/set a tak podobne.
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: koukam, ze ma prednasku i na MS festu:
    Microsoft Fest 2012 | Program konference
    http://www.ms-fest.cz/Program/Sobota

    Jinak ja tam budu prednaset neco o Windows Phone 8, pokud dorazi i NFC tagy a podari se zajistit i pouzitelnou kameru pro promitani z telefonu, tak to bude parada :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Byla dobra. Po dvou letech pokusu pouzivat unit testy jsem je opravdu zacal pouzivat a maji pro me prinos.



    btw. nikdo mi na ten kod nekouknete?
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: zrovna na tu prednasku jsem chtel jit, Tomas je v pohode
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Kdyz jsem byl v na prednasce o testech v akvarku u MS, tak tam ten prednasejici (myslim ze Tomas Herceg) rikal, ze v pripade ze mate vysinuteho sefa, tak mu nemate rikat o code-coverage. Ze se pak snadno stane, ze chce mit 100% a ze je to cesta do zahuby :).
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: tak nadrizeny rekl - proste napises na to testy, jasny?
    Takze copypastuju kod z converteru do testovacich metod a vymyslim k nim vstupy, to je produktivita :D
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Tak tam bych se na testy normalne vyprdnul.
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: vetsina konvertoru je jen jednoradkova vec, co zkontroluje vstupni typ a vrati string.Format(xy, value)
    popripade variace na BoolToVisibilityConverter
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Udelal jsem si extension metody pro tridu ReaderWriterLockSlim, aby se mi s tim dobre pracovalo. Neustaly volani EnterReadLock(), ExistReadLock(), uzavirano do try-finally bloku me fakt nebavi.

    Kouknete se mi prosim na ten kod a zrevidujte mi ho, jestli jsem na neco nahodou nezapomnel.
    Kdyz se vam bude libit, tak ho muzete pouzit ;).

    ReaderWriterLockSlimExtensions
    Kliknutím sem můžete změnit nastavení reklam