🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
6 messages
6 total messages Started by GrzybSon Thu, 04 Nov 2010 14:05
[NUnit] [WCF] testowanie usług
#21828
Author: GrzybSon
Date: Thu, 04 Nov 2010 14:05
16 lines
1527 bytes
Witam,

właśnie sobie napisałem klasę do testowania metod webserwisu, ale ponieważ 
webserwis ma pewną logikę wywołań metod chciałbym, aby metody klasy 
testującej były wykonywane w odpowiedniej kolejności.

Chodzi mi o to, że WS ma metodę zaloguj (dostaje tam tokena na podstawie 
usera, hasła) potem pewne metody dodaj, usuń itp.

Chodzi mi o to by te metody testowe wykonywały sie w odpowiedniej kolejności 
np. Zaloguj najpierw potem dalsze i na końcu wyloguj.
Czy da sie nadać kolejność metodom testowym?

--
Pozdrawiam,
 Macko 
Re: [NUnit] [WCF] testowanie usług
#21829
Author: Łukasz 'Maly' Ostrowski
Date: Thu, 04 Nov 2010 14:27
43 lines
2096 bytes
On Thu, 4 Nov 2010 15:05:04 +0100, GrzybSon wrote:
> <snip>
> Chodzi mi o to by te metody testowe wykonywały sie w odpowiedniej kolejności 
> np. Zaloguj najpierw potem dalsze i na końcu wyloguj.
> Czy da sie nadać kolejność metodom testowym?

Generalnie Unitem w Twoich Unit Testach powinien
być kompletny flow of control:

TestLogowania:
 ws.Login();

TestRobieniaCzegos:
 ws.Login();
 ws.RobCos();

TestRobieniaCzegosInnego:
 ws.Login();
 ws.RobCosInnego();

w taki sposób żeby każdy test był samodzielnym,
wyizolowanym i spójnym bytem nie polegającym na
niczym zewnętrznym.

[ http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test ]

Nie powinieneś polegać na kolejności testów,
na efektach ubocznych innych testów, niektóre 
frejmłorki wykonują testy alfabetycznie, niektóre 
losowo, taka jest specyfika Unit Testing.
[NUnit akurat odpala testy alfabetycznie, aczkolwiek
 nie radziłbym na tym polegać ;-)]

Defacto, test [ze środka] nie powinien zawieść tylko
dlatego bo Dev/Tester odpalił tylko ten jeden test,
zamiast odpalać wszystkie.

p.s. z ciekawości, mock'ujesz WebService czy komunikujesz
     sie z realnym endpointem? ;-)

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.eu/
Re: [NUnit] [WCF] testowanie usług
#21830
Author: GrzybSon
Date: Thu, 04 Nov 2010 14:37
44 lines
2244 bytes
> Generalnie Unitem w Twoich Unit Testach powinien
> być kompletny flow of control:
>
> TestLogowania:
> ws.Login();
>
> TestRobieniaCzegos:
> ws.Login();
> ws.RobCos();
>
> TestRobieniaCzegosInnego:
> ws.Login();
> ws.RobCosInnego();
>
> w taki sposób żeby każdy test był samodzielnym,
> wyizolowanym i spójnym bytem nie polegającym na
> niczym zewnętrznym.

Ox, dzięki za wyjaśnienie.

>
> [ http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test ]
>
> Nie powinieneś polegać na kolejności testów,
> na efektach ubocznych innych testów, niektóre
> frejmłorki wykonują testy alfabetycznie, niektóre
> losowo, taka jest specyfika Unit Testing.
> [NUnit akurat odpala testy alfabetycznie, aczkolwiek
> nie radziłbym na tym polegać ;-)]
>
> Defacto, test [ze środka] nie powinien zawieść tylko
> dlatego bo Dev/Tester odpalił tylko ten jeden test,
> zamiast odpalać wszystkie.

Oki.

>
> p.s. z ciekawości, mock'ujesz WebService czy komunikujesz
>     sie z realnym endpointem? ;-)

Nie wiem co to znaczy mockować, ale działam na żywym realnym webserwisie 
odpalanym pod środowiskiem.
Można to lepiej zrobić? 
Re: [NUnit] [WCF] testowanie usług
#21831
Author: Wiktor Zychla
Date: Thu, 04 Nov 2010 15:46
20 lines
1732 bytes
>> TestLogowania:
>> ws.Login();
>>
>> TestRobieniaCzegos:
>> ws.Login();
>> ws.RobCos();
>>
>> TestRobieniaCzegosInnego:
>> ws.Login();
>> ws.RobCosInnego();
>>
>> w taki sposób żeby każdy test był samodzielnym,
>> wyizolowanym i spójnym bytem nie polegającym na
>> niczym zewnętrznym.

jeśli się da, to dobrze pomyśleć o wydzieleniu login/logout do metod z 
atrybutami [SetUp]/[TearDown], żeby nie powielać ich wewnątrz każdego testu.

Wiktor Zychla
 
Re: [NUnit] [WCF] testowanie usług
#21832
Author: 3P
Date: Thu, 04 Nov 2010 18:46
37 lines
2215 bytes
Dnia 04-11-2010 o 16:46:01 Wiktor Zychla <wzychla@nospam.com> napisał(a):

>>> TestLogowania:
>>> ws.Login();
>>>
>>> TestRobieniaCzegos:
>>> ws.Login();
>>> ws.RobCos();
>>>
>>> TestRobieniaCzegosInnego:
>>> ws.Login();
>>> ws.RobCosInnego();
>>>
>>> w taki sposób żeby każdy test był samodzielnym,
>>> wyizolowanym i spójnym bytem nie polegającym na
>>> niczym zewnętrznym.
>
> jeśli się da, to dobrze pomyśleć o wydzieleniu login/logout do metod z  
> atrybutami [SetUp]/[TearDown], żeby nie powielać ich wewnątrz każdego  
> testu.
>
> Wiktor Zychla
>

Setup/Teardown nie jest zalecane, bo utrudnia czytanie kodu testu.
W takim MBUnit chyba celowo wogóle nie umożliwili Setup/Teardown.

Co do mockowania WS. To jest test tego WS więc nie można tego zmockować :)
Ja na to patrzę tak. WebService jest tylko interfejsem do mojej logiki tak  
samo
jak może nim być okienko, lub konsola i klawiatura.
Logika do osobnej klasy/klas i testujemy klasy. A potem testy integracji  
testujące
czy da się to wywoływać przez WS raz na jakiś czas. Testy jednostkowe w  
całości bez żadnych trudności,
konfiguracji itd powinny być bez problemu wykonywane na każdym komputerze  
w krótkim czasie.
Re: [NUnit] [WCF] testowanie usług
#21833
Author: Łukasz 'Maly' Ostrowski
Date: Thu, 04 Nov 2010 23:51
33 lines
2125 bytes
On Thu, 04 Nov 2010 19:46:58 +0100, 3P wrote:
> Setup/Teardown nie jest zalecane, bo utrudnia czytanie kodu testu.
> W takim MBUnit chyba celowo wogóle nie umożliwili Setup/Teardown.

Agreed.

> Co do mockowania WS. To jest test tego WS więc nie można tego zmockować :)
> Ja na to patrzę tak. WebService jest tylko interfejsem do mojej logiki tak  
> samo
> jak może nim być okienko, lub konsola i klawiatura.

Dyskusyjne, zależy czy testuje WS-behaviour czy composite clienta do 
tegoż serwisu =]. ;-)

> Logika do osobnej klasy/klas i testujemy klasy. A potem testy integracji  
> testujące
> czy da się to wywoływać przez WS raz na jakiś czas. Testy jednostkowe w  
> całości bez żadnych trudności,
> konfiguracji itd powinny być bez problemu wykonywane na każdym komputerze  
> w krótkim czasie.

Agreed again. ;-)

>> Nie wiem co to znaczy mockować, ale działam na żywym realnym webserwisie 
>> odpalanym pod środowiskiem.

Mock - udawać, nie używać żywej implementacji czegoś, tylko uhm, kontraktu.

http://en.wikipedia.org/wiki/Mock_object

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.eu/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads