Správičky 2 792 Blogy 945 Fórum 18 345

Databazove testy

photo
harrison314
10. 6. 2017 10:17:41
Body: 890
Najaktívnejší č.: 24

Databazove testy

Zdravim,
mam zahadny problem.
Spravil som si testy testujuce databazovu vrstvu.
Pri inicializacii testovania sa vytvori nova databaza (MS SQL Express 2016),
nasadi sa dacpac balicek (pomocou SqlPackage.exe), ktory obsahuje schemu, CRL procedury a inicializaciu ciselnikov cez MERGE,
potom sa spustaju testy, ktore su obalene v TransactionScope.

Problem je, ze ked v teste sleketnem hodnoty s cislniku, tak sa nevrati nic (prazdny zoznam hodnot),
no ked sa don v teste pokusim insertnut hodnoty, dostanem vynimku, ze rovnake Id uz jestvuje.
Ked test stopnem v debagu a databzu otvorim pomocou SQL Server Studia, tak na ten sty dopyt hodnoty ciselnika dostanem.
V oboch pripadoch pouzivam windows autentifikaciu.

Viete poradit cim to bude?

technologie:
MS SQL 2016 Express
ADO.NET a ciste SQL
MS Test
SSDT

[Reakcia]

photo
T
11. 6. 2017 16:55:22
Body: 21100
Najaktívnejší č.: 2

RE: Databazove testy

1. Preco su "testy obalene v transaction scope"?

2. Nechce sa mi strielat, skus si odsniffovat na urovni sql, co sa realne vola a v akom poradi, teoreticky moze byt problem prave tranzakciach alebo zlom poradi spustania testov

Tomáš Zeman, MCSD.NET, MCPD

[Reakcia]

photo
harrison314
11. 6. 2017 18:58:16
Body: 890
Najaktívnejší č.: 24

RE: Databazove testy

1. Aby sa vykonal rollback na vsteky zmeny v DB, ktore sa vykonaly v teste.

2. Testy su uplne oddelene, kazdy si nasetupuje to co potrebuje. Nezalezi na poradi ich spustania.

 

Ide o to, ze nevidim ciselniky, ktore sa pmocou API menit neda. Presnejsie nemozem ich selektnut, Ked pouzijem len Id hodnoty ako cudzi kluc tak vsteky operacie sa vykonaju.

 

To ze som si presiel vsetky izolation levely bolo ako prve co som skusal, no vysledok vzdy rovnaky.

[Reakcia]

photo
T
12. 6. 2017 9:47:03
Body: 21100
Najaktívnejší č.: 2

RE: Databazove testy

1. To nerob, tym si zabil cely integracny test (bezi v zasadne inych podminkach) a dacpac vies redeploynut znova naco to robis? Navyse, ak Ti tam bude vznikat nekonzistencia a pod., tak sa ku nej uz nedostanes po rollbacku

2. Sniffer + debugger, bohuzial, nic ma nenapada. Pokusne daj prec ten tran scope, ci to zbehne.

Tomáš Zeman, MCSD.NET, MCPD

[Reakcia]

photo
harrison314
15. 6. 2017 9:20:36
Body: 890
Najaktívnejší č.: 24

RE: Databazove testy

1. Cielom tychto testov je zistit, ci mam spravne napisane SQL-ko a mappovanie. Ano dacpac viem redeloynut, ale trva to 20 az 50 sekund a mam cez 80 testov. V tomto pripade mi pride redeplynutie nie prilis stastne. To radcej pouzit kniznicu Respawn, alebo nejaky Db snapshot.

 

Dat prec TransactionScope som skusal ako prve, a tiez mi neselktne cisleniky. Preto som pisal sem, lebo vsteky standardne sposoby odhalenia chyby zlyhali. Skusal som aj rôzne prístupy a šialene experimenty s komitmy a rollbackmi...

[Reakcia]

photo
T
23. 6. 2017 15:26:54
Body: 21100
Najaktívnejší č.: 2

RE: Databazove testy

Tak pouzi sql script, ak je dacpac taky pomaly ale v principe ak mas urobene build prostredie, tak integracne testy mozu bezat "asynchronne" a nijako Ta to neobtazuje. Ale pre mna rollback je kategoricke zlo, specialne ked testujes, ci mas spravne napisane sqlko. Aj snapshot je samozrejme dobre riesenie, respawn som nepoznal(zaujimava vec), ale tiez pre mna tazkoprijatelne riesenie.(vracanie stavu spat mi tiez smrdi)

Toto je uz naozaj len na debugger a sniffer, tazko pomoct, verim, ze si to uz ale vyriesil.

 

Tomáš Zeman, MCSD.NET, MCPD

[Reakcia]



Najaktívnejší užívatelia
1. 37730 b. photo vlko
2. 21100 b. photo T
3. 15955 b. photo spigi
4. 15450 b. photo Anonymous
5. 11110 b. photo dudok
6. 8990 b. photo Liero
7. 6885 b. photo siro
8. 6245 b. photo slavof
9. 5340 b. photo duracellko
10. 4430 b. photo xxxmatko