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.

Konfigurace

Je třeba mít staženou knihovnu JUnit? verze 4.4. a Spring ve verzi 2.5 a vyšší.

Nastavení Eclipse

Pro zdarné testování modulu je třeba nastavit eclipse tak, aby co nejméně ovlivňoval kopírování souborů do OpenCms.

Build path

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.

Source package

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.

Output adresář

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ů.

Context configuration

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.

Psaní testů

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í testů

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.

Odkazy


Zpět na OpenCMS.HomePage

Retrieved from http://wiki.kiv.zcu.cz/OpenCMS/TestovaniModuluPresJUnit
Content last modified on 23 February 2010, 17:15