OpenCMS: TestovaniModuluPresJUnit |
from Wiki KIVu |
Testování modulu pomocí JUnit? frameworku.
Pokud jste ještě nikdy nepracovali s JUnit? frameworkem, může přijít vhod návod na používání JUnit4 v Eclipse IDE.
Je třeba mít staženou knihovnu JUnit? verze 4.4. a Spring ve verzi 2.5 a vyšší.
Pro zdarné testování modulu je třeba nastavit eclipse tak, aby co nejméně ovlivňoval kopírování souborů do OpenCms.
První je třeba nastavit build path, respetive do ní přidat knihovny nad rámec již přidaných knihoven. Knihovny junit-4.4.jar a spring-test.jar se do build path přidají přes Properties(projektu) -> Java Build Path -> Libraries -> Add external jars.
Dále je třeba od sebe oddělit adresáře se zdrojovými kódy modulu a se zdrojovými kódy vlastních testů. Pro tento účel si vytvoříme nový source folder a pojmenujeme ho například test. Do něj vytvoříme balíkovou strukturu obdobnou té z adresáře src, jen balíky omezíme na testované balíky modulu.
Z důvodu oddělení překladů zdrojových kódů a zdrojových kódů testů je třeba provést následující nastavení: Properties(projektu) -> Java Build Path -> Sources. Zde je třeba zaškrnout Allow output folders for source folders a pak rozkliknout příslušný source folder a poeditovat výstupní adresář pro testy. Doporučený název je například test-classes.
Těmito manévry se dosáhlo toho efektu, že se budou do OpenCms kopírovat pouze přeložené třídy bez tříd testů.
src
překládané do classes
a třídy z test
do test
pak je to OK, pokud by ale Eclipse překládat src
do src
je to špatně.
Spring od verze 2.5 obsahuje podporu pro testování. Díky této podpoře je možné využít Dependency Injection při psaní. Proto je třeba vytvořit soubor xxx-context.xml v adresáři test, kde xxx je v ukázkovém modulu controller, protože jde o soubor pro testování controlleru.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="dataSource" class="org.springframework.jdbc.datasource.SingleConnectionDataSource"> <property name="driverClassName" value="org.postgresql.Driver" /> <property name="url" value="jdbc:postgresql://localhost:5432/postgres" /> <property name="username" value="postgres" /> <property name="password" value="postgres" /> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="osobyPrehledController" class="cz.zcu.kiv.opencms.springmvcapp.controllers.OsobyPrehledController"> <property name="osobaManager" ref="osobaManager" /> </bean> <bean id="osobaManager" class="cz.zcu.kiv.opencms.springmvcapp.services.OsobaManagerImpl"> <property name="osobaDao" ref="osobaDao" /> </bean> <bean id="osobaDao" class="cz.zcu.kiv.db.dao.OsobaDaoImpl"></bean> </beans>
Spring si vynucuje mít deklarovány beany dataSource a transactionManager a to i v případě, že jde o aplikaci bez propojení s DB serverem. Poslední dvě beany jsou v tomto souboru pro injektnutí do testovaných tříd pomocí Springového Dependency Injection.
Vlastní testování modulu je stejné jako testování kterékoli jiné webové aplikace. Více si můžete přečíst v uvedených odkazech.
Spuštění tesů se provádí pří z vývojového prostředí Eclipse, kde nad třídou s testy, respektive nad Suite class zavoláme Run as -> JUnit? Test. Test(-y) se spustí pokud je v IDE nainstalováno rozšíření pro JUnit?. Toto rozšíření graficky zobrazí výsledky testů a případně zobrazí kde a proč daný test selhal.
Zpět na OpenCMS.HomePage