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;
// }
}