A következő címkéjű bejegyzések mutatása: Ant. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: Ant. Összes bejegyzés megjelenítése

2011. augusztus 6., szombat

FitNesse tesztek indítási lehetőségei

Egy korábbi bejegyzésemben a FitNesse használatát mutattam be egy példán keresztül, a mostani cikkben pedig az elkészített teszt futtatási lehetőségeit fogom ismertetni.

A tesztek indítási módjaiban közös, hogy meg kell adni a típust (suite vagy teszt) valamint az útvonallal specifikált nevet, majd opcionálisan a végrehajtás eredményének kimeneti formátumát és a Fitnesse web-szerver által használt portot.

FitNesse tesztek wiki oldalról történő indítása

A tesztek indításának talán legegyszerűbb módja a wiki oldalról történő futtatás. A FitNesse web-szervert, a FitNesse gyökér könyvtárából indítsuk el a java -jar fitnesse.jar –p 6666 paranccsal, majd keressük ki a futtatni kívánt tesztet vagy suite-ot és kattintsunk a baloldali menüben a suite ill. test gombra. 

Indítás után, a típusnak megfelelően megjelenik egy ?test ill. ?suite paraméter az url-ben, melyek begépelésével a futtatás direkt módon is végrehajtható. Ha a tesztek eredményeit nem a wiki oldalon keresztül, hanem egy meghatározott formátumban szeretnénk elérni, használjuk a format url paramétert a text, xml vagy html értékekkel. pl.: ExampleTestSuite?suite&format=xml

A böngésző címsorában található context-root utáni URL-t, mint útvonallal specifikált nevet használhatjuk fel a suite-hoz tartozó összes teszt (ExampleTestSuite) vagy egy kiválasztott teszt (ExampleTestSuite.ExampleTest) futtatásához a további eseteknél.

FitNesse tesztek indítása parancssorból

A konzolról történő indításhoz a FitNesse gyökérkönyvtárából adjuk ki a java -jar fitnesse.jar -p 6666 -c "ExampleTestSuite?suite&format=xml" -d "/usr/local/Fitnesse" parancsot. A -c opcióval definiálhatjuk a futtatni kívánt tesztet és a kimeneti formátumot, a -d kapcsolóval pedig a munka könyvtárat állíthatjuk be.

FitNesse tesztek indítása Java kódból

A Fitnesse tesztek java kódból történő indításához, az Eclipse/Run Configurations menü alatt a java kódhoz tartozó konfiguráció Arguments tabján, a Working directory résznél adjuk meg a FitNesse munka könyvtár helyét.


A fejlesztőeszköz beállítása után, a tesztek Java kódból történő indításához az alábbi kódrészlet használható fel.
import fitnesse.Arguments;
import fitnesseMain.FitNesseMain
    
    ...
    
    public void testerMethod() throws Exception {
        Arguments arguments = new Arguments();
        arguments.setInstallOnly(false);
        arguments.setOmitUpdates(true);
        arguments.setPort("6666");
        arguments.setCommand("ExampleTestSuite.ExampleTest?test");
        arguments.setRootPath("/usr/local/Fitnesse");
        FitNesseMain.dontExitAfterSingleCommand = true;
        FitNesseMain.launchFitNesse(arguments);
    }
FitNesse tesztek indítása Ant használatával

Az Ant-tal történő futtatást akkor érdemes választani, amikor a FitNesse tesztek indítását a build folyamat részeként, automatizáltan akarjuk végrehajtani. Az alábbi kódrészleten egy ant build fájl tartalma látható, ahol is a start target végzi el a kiválasztott tesztek indítását.
<project basedir="/usr/local/Fitnesse" default="start" name="Test">  
 <path id="classpath">
  <fileset dir="/usr/local/Fitnesse" includes="**/*.jar">
  </fileset>
 </path>   

 <target name="start">        
  <java failonerror="true" fork="true" jar="/usr/local/Fitnesse/fitnesse.jar">       
   <arg value="-p"></arg>      
   <arg value="6666"></arg>
   <arg value="-c"></arg>                
   <arg value="ExampleTestSuite?suite&format=xml"></arg>     
  </java>
 </target> 
</project>
FitNesse tesztek indítása a Hudson CI szerver segítségével

A Hudson ill. Jenkins Continuous Integration szerverek szintén lehetőséget nyújtanak a FitNesse tesztek futtatásához. A folyamatos integráció lényege, hogy a fejlesztők folyamatosan integrálják a munkájukat egy központi szerveren, ahol is a build folyamat után ellenőrzéseknek vetik alá a szoftvert mint terméket. Ilyen ellenőrzések lehetnek a statikus kód ellenőrzések, teszt lefedettség vizsgálatok vagy a FitNesse tesztek futtatása. Az ellenőrzések eredményét a Hudson képes megjeleníteni, így folyamatosan követhetjük a projekt állapotát és szükség szerint időben beavatkozhatunk!

Itt jegyezném meg, hogy a Hudson/Jenkins az egyik kedvenc eszközöm, ezért hamarosan a folyamatos integráció témakörben is fogok blogolni... :)

A rövid áttekintés után térjünk vissza FitNesse tesztek indításához. A Hudson plugin manager oldalon telepítsük fel a FitNesse plugint, majd hozzunk létre egy új jobot a projektnek. A build résznél válasszuk ki az ”Execute Fitnesse tests” opciót, majd a ”Start new Fitnesse instance as part of build”-et bejelölve töltsük ki a mezőket az alábbi ábra szerint:

 
Ahhoz, hogy a FitNesse tesztek lefutási eredményét riportként is megtekinthessük, állítsuk be a FitNesse result fájlt, a ”Post build action” résznél is. Figyeljünk arra, hogy az eredmény fájl útvonalát a Hudson workspace-en belül adjuk meg!


Mentsük el a beállításokat és futtassuk a létrehozott job-ot, majd tekintsük meg a helyes beállításokról tanúskodó konzol naplót.


A FitNesse teszteket sokféleképpen, de mégis hasonló séma alapján indíthatjuk, így megvan arra a lehetőségünk, hogy mindig a felmerült igényekhez legjobban illeszkedő módszert válasszuk!

A következő cikkemben még mindig a tesztelési témakörnél maradok, de már egy másik remek teszteszköz ismertetésére fogok rátérni!

2011. május 24., kedd

Figyelj a Java verziókra!

Úgy döntöttünk, hogy egy webalkalmazás fejlesztését IBM Rational Application Developer 8-ról Eclipse Helios alá helyezzük át. Mivel Eclipsehez nem találtunk Websphere 6.1-es szerver adaptert, az az ötlet merült fel hogy a build és telepítési folyamatot is Apache Ant segítségével oldjuk meg.

Elkészítettem a build fájlokat és próbaképpen feltelepítettem az ear-t a szerverre, azonban egy hiba üzenet jelent meg a böngészőben: Error 500, bad major version at offset=6.

A probléma oka, hogy az Eclipse-ben alapértelmezésként Java 6 volt beállítva, így a javac Ant taszk is ezzel fordította le az osztályokat. Mivel a Websphere 6.1 még az 1.5-ös Java verzióját használja, ebből adódóan a java 6-al lefordított osztályokat nem tudta értelmezni.

Az első ötletem, hogy használjuk az 1.5-ös Java-t az osztályok fordításához! Átállítottam az Eclipse-es runtime-ot (Eclipse/Window/Preferences/Java/Installed JREs) és a compiler compliance level-t (Eclipse/Window/Preferences/Java/Compiler) is az 1.5-ös Java-ra, a buildelés során azonban a következő hiba jelentkezett:

C:\IBM\rationalsdp\workspace\Project\gen\hu\tk\web\workflow\WorkflowManagerCanvas.java:22: cannot access com.vaadin.addon.chameleon.ChameleonTheme
bad class file: C:\IBM\rationalsdp\workspace\Project\WebContent\WEB-INF\lib\vaadin-chameleon-theme-1.0.1.jar (com/vaadin/addon/chameleon/ChameleonTheme.class)
class file has wrong version 50.0, should be 49.0

A probléma oka, hogy a vaadin-chameleon-theme-1.0.1.jar/ChameleonTheme.class fájl Java 6-os megfelelési szinttel lett lefordítva, így az 1.5-ös compiler nem tudta értelmezni. A hibaüzenet feloldásához az alábbi táblázat volt a segítségemre, ami a Java verziók megfeleltetéseit tartalmazza:

Major version Minor version Java platform
50 0 Java 6
49 0 Java 1.5
48 0 Java 1.4
47 0 Java 1.3
46 0 Java 1.2
45 3 Java 1.1

A melósabb megoldás az lett volna, hogy a vaadin-chameleon-theme-1.0.1.jar class fájljait újrafordítom 1.5-ös java fordítóval. Az egyszerűbb megoldás pedig, hogy az eredeti Java 6-os runtime-ot használva, Java 1.5-ös megfelelési szintű class fájlokat készítek. Ehhez a javac ant taszkhoz beállítottam az 1.5-ös Java megfelelési szintet a target="1.5" property-vel.