Volania test metod vs. konstuktor

2005-08-18 Thread Horvath Bystrik
Zdravim konferenciu!

Mam nasledovny problem. Pri testovani pomocou junit som zistil, ze ak ma
trieda odvodena od TestCase viac testXxx metod, tak pred kazdym volanim
takejto metody sa vola konstruktor danej triedy, co rezultuje vo vytvorenie
viacerych instancii triedy TestCase (jej derivatu). Junit zrejme interne pre
kazdu testXxx metodu vytvori interne instanciu triedy v ktorej je metoda
deklarovana a potom invokuje metodu testXxx. Ocakaval som, ze na jendej
instancii TestCase sa invokuju vsetky testXxx metody. Da sa toto chovanie
junit-u nejako ovpyvnit?

Diky,
Bystro Horvath


Re: Volania test metod vs. konstuktor

2005-08-18 Thread Jozef Babjak
Pred kazdym testom sa spusta setUp() a po nom tearDown(). Konstruktor 
by mal byt obligatny 

public TestClass(String name) {
super(name); 
}

Robite v konstruktore nieco viac? Preco Vam vytvaranie istancii pre kazdy 
test prekaza? I ked to vytvaranie sa mi nezda, ale vyvratit ho neviem, 
nikdy som sa tym nezaoberal. 

J. 


On Thu, Aug 18, 2005 at 09:01:30AM +0200, Horvath Bystrik wrote:
> Zdravim konferenciu!
> 
> Mam nasledovny problem. Pri testovani pomocou junit som zistil, ze ak ma
> trieda odvodena od TestCase viac testXxx metod, tak pred kazdym volanim
> takejto metody sa vola konstruktor danej triedy, co rezultuje vo vytvorenie
> viacerych instancii triedy TestCase (jej derivatu). Junit zrejme interne pre
> kazdu testXxx metodu vytvori interne instanciu triedy v ktorej je metoda
> deklarovana a potom invokuje metodu testXxx. Ocakaval som, ze na jendej
> instancii TestCase sa invokuju vsetky testXxx metody. Da sa toto chovanie
> junit-u nejako ovpyvnit?
> 
> Diky,
> Bystro Horvath


Re: Volania test metod vs. konstuktor

2005-08-18 Thread Oto Buchta
On Thursday 18 of August 2005 09:01, Horvath Bystrik wrote:
> Zdravim konferenciu!
>
> Mam nasledovny problem. Pri testovani pomocou junit som zistil, ze ak ma
> trieda odvodena od TestCase viac testXxx metod, tak pred kazdym volanim
> takejto metody sa vola konstruktor danej triedy, co rezultuje vo vytvorenie
> viacerych instancii triedy TestCase (jej derivatu). Junit zrejme interne
> pre kazdu testXxx metodu vytvori interne instanciu triedy v ktorej je
> metoda deklarovana a potom invokuje metodu testXxx. Ocakaval som, ze na
> jendej instancii TestCase sa invokuju vsetky testXxx metody. Da sa toto
> chovanie junit-u nejako ovpyvnit?

Nejjednodussi je podivat se do zdrojaku, jestli je tam nejaka properta. Ale 
jinak ja pouzivam klasicky single-init design pattern, tedy prazdne 
konstruktory (pouze super(...) ) a 

private static boolean first = true;
public void setUp() {
if (first) {
   first = false;
   ...
}
...
}

Diky seqencnosti junitu neni treba synchronizovat.
-- 
Oto 'tapik' Buchta, [EMAIL PROTECTED]
QA Engineer, Systinet Corp,
http://www.systinet.com


RE: Volania test metod vs. konstuktor

2005-08-18 Thread Vit Novak
Vzhledem k tomu, ze u JUnitu stejne neni definovano, v jakem poradi se
testMetody pousti, prislo by mi jako cistsi a citelnejsi si udelat jen jednu
testMetodu a v ni si volat svoje testy, ktere uz nebudou mit prototyp
"public void testBlaBla()". Mnohem lip pak muzu zachazet i se stavem
objektu, pokud ho potrebuju atp.
Metody fail, assertTrue atp. muzete pouzivat vesele dal.

Jedina nevyhoda, kterou ted vidim, je ta, ze pokud ve firme mate metriku na
pocet testu, pak takto vytvarene testy se v ni neprojevi. :)

V.

> -Original Message-
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
> Behalf Of Oto Buchta
> Sent: Thursday, August 18, 2005 9:51 AM
> To: Java
> Subject: Re: Volania test metod vs. konstuktor
> 
> On Thursday 18 of August 2005 09:01, Horvath Bystrik wrote:
> > Zdravim konferenciu!
> >
> > Mam nasledovny problem. Pri testovani pomocou junit som zistil, ze ak ma
> > trieda odvodena od TestCase viac testXxx metod, tak pred kazdym volanim
> > takejto metody sa vola konstruktor danej triedy, co rezultuje vo
> vytvorenie
> > viacerych instancii triedy TestCase (jej derivatu). Junit zrejme interne
> > pre kazdu testXxx metodu vytvori interne instanciu triedy v ktorej je
> > metoda deklarovana a potom invokuje metodu testXxx. Ocakaval som, ze na
> > jendej instancii TestCase sa invokuju vsetky testXxx metody. Da sa toto
> > chovanie junit-u nejako ovpyvnit?
> 
> Nejjednodussi je podivat se do zdrojaku, jestli je tam nejaka properta.
> Ale
> jinak ja pouzivam klasicky single-init design pattern, tedy prazdne
> konstruktory (pouze super(...) ) a
> 
> private static boolean first = true;
> public void setUp() {
> if (first) {
>first = false;
>...
> }
> ...
> }
> 
> Diky seqencnosti junitu neni treba synchronizovat.
> --
> Oto 'tapik' Buchta, [EMAIL PROTECTED]
> QA Engineer, Systinet Corp,
> http://www.systinet.com




Re: Volania test metod vs. konstuktor

2005-08-18 Thread Jan Dvořák

My jsme ty inicializacni veci, ktere by se mely spustit jednou,
zacali delat ve statickem bloku te testovaci tridy.

Honza Dvorak


Jozef Babjak wrote:
Pred kazdym testom sa spusta setUp() a po nom tearDown(). Konstruktor 
by mal byt obligatny 


public TestClass(String name) {
	super(name); 
}


Robite v konstruktore nieco viac? Preco Vam vytvaranie istancii pre kazdy 
test prekaza? I ked to vytvaranie sa mi nezda, ale vyvratit ho neviem, 
nikdy som sa tym nezaoberal. 

J. 



On Thu, Aug 18, 2005 at 09:01:30AM +0200, Horvath Bystrik wrote:
 

Zdravim konferenciu!

Mam nasledovny problem. Pri testovani pomocou junit som zistil, ze ak ma
trieda odvodena od TestCase viac testXxx metod, tak pred kazdym volanim
takejto metody sa vola konstruktor danej triedy, co rezultuje vo vytvorenie
viacerych instancii triedy TestCase (jej derivatu). Junit zrejme interne pre
kazdu testXxx metodu vytvori interne instanciu triedy v ktorej je metoda
deklarovana a potom invokuje metodu testXxx. Ocakaval som, ze na jendej
instancii TestCase sa invokuju vsetky testXxx metody. Da sa toto chovanie
junit-u nejako ovpyvnit?

Diky,
Bystro Horvath
   




RE: Volania test metod vs. konstuktor

2005-08-18 Thread Horvath Bystrik
Tiez ma napadlo robit to staticky, inac asi to neobidem

Bystro Horvath 

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Jan Dvořák
Sent: Thursday, August 18, 2005 10:14 AM
To: Java
Subject: Re: Volania test metod vs. konstuktor

My jsme ty inicializacni veci, ktere by se mely spustit jednou,
zacali delat ve statickem bloku te testovaci tridy.

Honza Dvorak


Jozef Babjak wrote:
>Pred kazdym testom sa spusta setUp() a po nom tearDown(). Konstruktor 
>by mal byt obligatny 
>
>public TestClass(String name) {
>   super(name); 
>}
>
>Robite v konstruktore nieco viac? Preco Vam vytvaranie istancii pre kazdy 
>test prekaza? I ked to vytvaranie sa mi nezda, ale vyvratit ho neviem, 
>nikdy som sa tym nezaoberal. 
>
>J. 
>
>
>On Thu, Aug 18, 2005 at 09:01:30AM +0200, Horvath Bystrik wrote:
>  
>>Zdravim konferenciu!
>>
>>Mam nasledovny problem. Pri testovani pomocou junit som zistil, ze ak ma
>>trieda odvodena od TestCase viac testXxx metod, tak pred kazdym volanim
>>takejto metody sa vola konstruktor danej triedy, co rezultuje vo
vytvorenie
>>viacerych instancii triedy TestCase (jej derivatu). Junit zrejme interne
pre
>>kazdu testXxx metodu vytvori interne instanciu triedy v ktorej je metoda
>>deklarovana a potom invokuje metodu testXxx. Ocakaval som, ze na jendej
>>instancii TestCase sa invokuju vsetky testXxx metody. Da sa toto chovanie
>>junit-u nejako ovpyvnit?
>>
>>Diky,
>>Bystro Horvath
>>


Re: Volania test metod vs. konstuktor

2005-08-18 Thread Oto Buchta
On Thursday 18 of August 2005 10:03, Vit Novak wrote:
> Vzhledem k tomu, ze u JUnitu stejne neni definovano, v jakem poradi se
> testMetody pousti, prislo by mi jako cistsi a citelnejsi si udelat jen
> jednu testMetodu a v ni si volat svoje testy, ktere uz nebudou mit prototyp
> "public void testBlaBla()". Mnohem lip pak muzu zachazet i se stavem
> objektu, pokud ho potrebuju atp.
> Metody fail, assertTrue atp. muzete pouzivat vesele dal.
>
> Jedina nevyhoda, kterou ted vidim, je ta, ze pokud ve firme mate metriku na
> pocet testu, pak takto vytvarene testy se v ni neprojevi. :)

Sorry, ale toto je tezky nonsence. Nejde ani o metriku, ale o to, ze 
likvidujete paralelismus pri vyvoji a, coz je dulezitejsi, z toho, ktere 
testy prosly a ktere ne lze mnohem lepe vyvodit kde nastala chyba. Navic pri 
rozumnych nazvech testu pak vite, co jste uz otestovali  a co ne.  Ja typicky 
pred implementaci kazde featury napisu do testu patricne tridy metodu 

public void testNovaFeatura() {
 throw new UnsupportedOperationException("To be implemented");//TODO
}

(uz mam na to sablonu v IDEI ;-) )

A pokud se nechci spolehnout na to, ze JUnit funguje tak, ze zavola metody 
tridy tak, jak jsou po sobe napsane ve zdrojaku, pouzivam nasledujici 
konstrukci:

/**
 * Initialize suit.
 */
public static Test suite() {
// ensure the test sequence
TestSuite retval = new TestSuite();

retval.addTest(new MyTest("testHeadDirNonexistent"));
retval.addTest(new MyTest("testGetDirNonexistent"));
retval.addTest(new MyTest("testAppendDirNonexistent"));
retval.addTest(new MyTest("testDeleteDirNonexistent"));
return retval;
   }

   public static void main(String args[]) {
TestRunner.run(suite());
}

public MyTest(String name) {
super(name);
}

A pokud potrebuju mit nejaky objekt v nejakem stavu, vzdy si ho znovu vytvarim 
a z inicialniho stavu jej v kazdem testu nastavim do stavu patricneho. Jinak 
nikdo nezaruci, co je v jakem stavu. A samozrejme v kazdem kroku nastaveni 
pouzivam JUnitove asserty...
-- 
Oto 'tapik' Buchta, [EMAIL PROTECTED]
QA Engineer, Systinet Corp,
http://www.systinet.com


Re: Volania test metod vs. konstuktor

2005-08-18 Thread ales
Myslim si, ze uplne najcistejsie riesenie podporuje samotny JUnit. 
Metoda "public static Test suite()" umoznuje nadefinovat poradie v akom 
sa budu testy spustat a statisticke informacie o vykonanych testoch 
(pocet atd.) budu zodpovedat realite. V pripade zaujmu si mozete pozriet 
prilozeny subor, ktory obsahuje ukazkovy kod.


Ales


Vit Novak wrote:


Vzhledem k tomu, ze u JUnitu stejne neni definovano, v jakem poradi se
testMetody pousti, prislo by mi jako cistsi a citelnejsi si udelat jen jednu
testMetodu a v ni si volat svoje testy, ktere uz nebudou mit prototyp
"public void testBlaBla()". Mnohem lip pak muzu zachazet i se stavem
objektu, pokud ho potrebuju atp.
Metody fail, assertTrue atp. muzete pouzivat vesele dal.

Jedina nevyhoda, kterou ted vidim, je ta, ze pokud ve firme mate metriku na
pocet testu, pak takto vytvarene testy se v ni neprojevi. :)

V.

 


-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Oto Buchta
Sent: Thursday, August 18, 2005 9:51 AM
To: Java
Subject: Re: Volania test metod vs. konstuktor

On Thursday 18 of August 2005 09:01, Horvath Bystrik wrote:
   


Zdravim konferenciu!

Mam nasledovny problem. Pri testovani pomocou junit som zistil, ze ak ma
trieda odvodena od TestCase viac testXxx metod, tak pred kazdym volanim
takejto metody sa vola konstruktor danej triedy, co rezultuje vo
 


vytvorenie
   


viacerych instancii triedy TestCase (jej derivatu). Junit zrejme interne
pre kazdu testXxx metodu vytvori interne instanciu triedy v ktorej je
metoda deklarovana a potom invokuje metodu testXxx. Ocakaval som, ze na
jendej instancii TestCase sa invokuju vsetky testXxx metody. Da sa toto
chovanie junit-u nejako ovpyvnit?
 


Nejjednodussi je podivat se do zdrojaku, jestli je tam nejaka properta.
Ale
jinak ja pouzivam klasicky single-init design pattern, tedy prazdne
konstruktory (pouze super(...) ) a

private static boolean first = true;
public void setUp() {
if (first) {
  first = false;
  ...
}
...
}

Diky seqencnosti junitu neni treba synchronizovat.
--
Oto 'tapik' Buchta, [EMAIL PROTECTED]
QA Engineer, Systinet Corp,
http://www.systinet.com
   







 

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public final class MyTestCase 
extends TestCase 
{
public MyTestCase( String pName ) 
{
super( pName );
}

public void testFoo1() 
{
System.out.println( "testFoo1()" );
}

public void testFoo2() 
{
System.out.println( "testFoo2()" );
}

public void testFoo3() 
{
System.out.println( "testFoo3()" );
}

public static Test suite() 
{
TestSuite testSuite = new TestSuite();

testSuite.addTest( new MyTestCase( "testFoo1" ) );
testSuite.addTest( new MyTestCase( "testFoo2" ) );
testSuite.addTest( new MyTestCase( "testFoo3" ) );

return testSuite;
}

//public static Test suite() 
//{
//TestSuite testSuite = new TestSuite();
//
//testSuite.addTest( new MyTestCase( "testFoo2" ) );
//testSuite.addTest( new MyTestCase( "testFoo1" ) );
//testSuite.addTest( new MyTestCase( "testFoo3" ) );
//
//return testSuite;
//}

//public static Test suite() 
//{
//TestSuite testSuite = new TestSuite();
//
//testSuite.addTest( new MyTestCase( "testFoo1" ) );
//testSuite.addTest( new MyTestCase( "testFoo3" ) );
//testSuite.addTest( new MyTestCase( "testFoo2" ) );
//
//return testSuite;
//}
}


Re: Volania test metod vs. konstuktor

2005-08-18 Thread Oto Buchta
On Thursday 18 of August 2005 11:01, Oto Buchta wrote:
...
>public static void main(String args[]) {
> TestRunner.run(suite());
> }
...
Zapomnel jsem dodat 

import junit.textui.TestRunner;
-- 
Oto 'tapik' Buchta, [EMAIL PROTECTED]
QA Engineer, Systinet Corp,
http://www.systinet.com