Budapest University of Technology and Economics Fault-tolerant Systems Research Group Eclipse alapú technológiák Plug-in fejlesztés teszteléssel Balogh.

Slides:



Advertisements
Hasonló előadás
© Kozsik Tamás Különböző nyelvekhez igazítás Internationalization - i18n.
Advertisements

Tamás Kincső, OSZK, Analitikus Feldolgozó Osztály, osztályvezető A részdokumentumok szolgáltatása az ELDORADO-ban ELDORADO konferencia a partnerkönyvtárakkal.
Osztály leszármaztatás

Kamarai prezentáció sablon
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Készítette: Boros Erzsi
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
Programozás III STRING-XML.
Erőállóképesség mérése Találjanak teszteket az irodalomban
Humánkineziológia szak
Mellár János 5. óra Március 12. v
Koordináta transzformációk
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Domain specifikus nyelvek Eclipse Modeling.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Eclipse architektúra.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Bevezető.
Domain tesztelés bemutatása PHP tesztelés
Öröklődés 2..
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
A tételek eljuttatása az iskolákba
Fájlkezelés, IO Kivételkezelés Belső osztályok
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
Elektronikai Áramkörök Tervezése és Megvalósítása
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Tömbök ismétlés Osztályok Java-ban Garbage collection
Ember László XUBUNTU Linux (ami majdnem UBUNTU) Ötödik nekifutás 192 MB RAM és 3 GB HDD erőforrásokkal.
VÁLOGATÁS ISKOLÁNK ÉLETÉBŐL KÉPEKBEN.
Az objektum-orientált tervezési alapelvek kritikai vizsgálata
Védőgázas hegesztések
1. IS2PRI2 02/96 B.Könyv SIKER A KÖNYVELÉSHEZ. 2. IS2PRI2 02/96 Mi a B.Könyv KönyvelésMérlegEredményAdóAnalitikaForintDevizaKönyvelésMérlegEredményAdóAnalitikaForintDeviza.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
SPRING FRAMEWORK bemutatása
Készítette: Keszthelyi Zsolt
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Szerkezeti elemek teherbírásvizsgálata összetett terhelés esetén:
Kivételkezelés.
DRAGON BALL GT dbzgtlink féle változat! Illesztett, ráégetett, sárga felirattal! Japan és Angol Navigáláshoz használd a bal oldali léptető elemeket ! Verzio.
szakmérnök hallgatók számára
2. A KVANTUMMECHANIKA AXIÓMÁI 1. Erwin Schrödinger: Quantisierung als Eigenwertproblem (1926) 2.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
4. Feladat (1) Foci VB 2006 Különböző országok taktikái.
2007. május 22. Debrecen Digitalizálás és elektronikus hozzáférés 1 DEA: a Debreceni Egyetem elektronikus Archívuma Karácsony Gyöngyi DE Egyetemi és Nemzeti.
1 Add az APK-t! Add az APK-t! Automatizált apptesztelés 2013/10/13.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Csurik Magda Országos Tisztifőorvosi Hivatal
A klinikai transzfúziós tevékenység Ápolás szakmai ellenőrzése
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
2006. Peer-to-Peer (P2P) hálózatok Távközlési és Médiainformatikai Tanszék.
Android alkalmazások tesztelése
QualcoDuna interkalibráció Talaj- és levegövizsgálati körmérések évi értékelése (2007.) Dr. Biliczkiné Gaál Piroska VITUKI Kht. Minőségbiztosítási és Ellenőrzési.
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Programozás III UNIT TEST. És tényleg: Honnan lehet tudni, hogy működik-e vagy sem?
Objektum orientált programozás
1. Melyik jármű haladhat tovább elsőként az ábrán látható forgalmi helyzetben? a) A "V" jelű villamos. b) Az "M" jelű munkagép. c) Az "R" jelű rendőrségi.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
> aspnet_regiis -i 8 9 TIPP: Az „Alap” telepítés gyors, nem kérdez, de később korlátozhat.
A KÖVETKEZŐKBEN SZÁMOZOTT KÉRDÉSEKET VAGY KÉPEKET LÁT SZÁMOZOTT KÉPLETEKKEL. ÍRJA A SZÁMOZOTT KÉRDÉSRE ADOTT VÁLASZT, VAGY A SZÁMOZOTT KÉPLET NEVÉT A VÁLASZÍV.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Programozás III JPA.
Maven és Ant Build eszközök bemutatása
Web programozás és haladó fejlesztési technikák
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Dependency Injection Tesztduplikátumok, Mock-ok, Fake-ek Feladat
Előadás másolata:

Budapest University of Technology and Economics Fault-tolerant Systems Research Group Eclipse alapú technológiák Plug-in fejlesztés teszteléssel Balogh András

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 2 JUnit  Regressziós teszt keretrendszer  Erich Gamma és Kent Beck írta  Unit tesztelésre használatos Java-ban  Nyílt forráskódú  IBM CPL licensz alatt elérhető

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 3 JUnit  Web:  Az Eclipse tartalmazza a JUnit-ot −GUI-t is kínál a tesztek futtatásához  Eclipse-n kívül is futtathatóak a tesztek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 4 Eclipse - JUnit  A JUnit beállítása a Preferences ablakban lehetséges  Általában jók az alapbeállítások  Szűrőket lehet megadni, hogy mely csomagok és osztályok jelenjenek meg a stack trace-ben

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 5 TestCase - teszteset  Több tesztet is futtathat  A TestCase osztályból származik  Definiálja, hogy mely tagváltozók tartalmazzák a teszt állapotát az osztályon belül  Inicializálás a setUp metódussal  Takarítás a tearDown metódussal

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 6 TestCase készítése  Csináljunk egy új osztályt a project-ben  Adjuk hozzá a junit.jar-t a függőségekhez

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 7 TestCase létrehozása  Kiválasztjuk a csomagot, ahova a tesztet rakni szeretnénk  A new menüből válasszuk a JUnit Test Case-t.  Elnevezzük, stb.  Egy megfelelő osztály létrejön

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 8 Példa: TestCase package com.espirity.course.testing; import junit.framework.TestCase; public class FirstTestCase extends TestCase { public FirstTestCase(String arg0) { super(arg0); } public static void main(String[] args) { } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 9 TestCase létrehozása  Minden „test”-tel kezdődő metódus tesztként lesz kezelve az osztályban −Sok teszt metódusunk lehet  Minden teszt metódus többféle „assert” metódust használhat, hogy a tesztelés alatt álló osztályok állapotát vizsgálja −Az assert metódusok öröklöttek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 10 TestCase létrehozása  Assert −assertEqual(x,y) −assertFalse(boolean) −assertTrue(boolean) −assertNull(Object) −assertNotNull(Object) −asserSame(Object,Object) −assertNotSame(Object,Object)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 11 Példa: TestCase package testing; import junit.framework.TestCase; public class FirstTestCase extends TestCase { public FirstTestCase(String arg0) { super(arg0); } public static void main(String[] args) {} protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } public void testCompareSucceed() { assertEquals(0, 0); //this assertion will succeed } public void testCompareFail() { assertEquals(0, 1); //this assertion will fail }}

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 12 TestCase futtatása  Válasszuk ki az osztályt  Run -> Run as - > JUnit Test  Lefutnak a tesztek  Az eredmény a JUnit view-ban jelenik meg.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 13 JUnit view  Információk −Piros/zöld a teszt eredménye hiba/ok −Látható a meghiúsult tesztek neve −Látható a hiba trace −Látható a lefutott tesztek száma −Látható a hibák száma

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 14 TestSuite  Több TestCase vagy Suite futtatása  A TestSuite osztályból örököltetjük  Létrehozás varázslóval… −File->New->Other…->Java->JUnit −A varázslóban válasszuk a JUnit Test Suite opciót −Megadhatjuk a résztevő Case-eket

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 15 Példa: TestSuite package com.espirity.course.testing; import junit.framework.Test; public class AllInclusiveTestSuite { public static Test suite() { TestSuite suite = new TestSuite("Test for com.espirity.course.testing"); //$JUnit-BEGIN$ suite.addTestSuite(FirstTestCase.class)); suite.addTestSuite(SecondTestCase.class)); //$JUnit-END$ return suite; }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 16 TestSuite futtatás  Hasonló a TestCase-éhez  Minden megadott TestCase lefut  A JUnit ablak tartalmazza az eredményeket  Fontos: TestSuite is adható TestSuite-hoz!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 17 PDE JUnit  JUnit támogatás plug-in fejlesztéshez  A sima JUnit nem használható −Nem Workbench-ben fut −Az Eclipse plug-inok nem leérhetőek  PDE JUnit −Külön futtatási mód

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 18 Plugin futtatás Alap Eclipse, ezen dolgozunk

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 19 Plugin futtatás Projectek a workbench- ben

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 20 Plugin futtatás Ha plugint futtatunk egyúj Eclipse példány indul

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 21 Plugin futtatás Betöltődik a plugin-unk

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 22 Plugin futtatás Külön workspace látszik

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 23 Plugin teszt futtatás Teszt projekt a workspace-ben

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 24 Plugin teszt futtatás A teszt is betöltődik, valamint a teszt futtató

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 25 PDE JUnit működés  Írunk egy tesztet (ugyanúgy, mint alapesetben)  Futtatjuk JUnit Plug-in Test-ként  Egy Eclipse ablak nyílik, majd a tesztek lefutása után bezáródik  A teszteredményt a szokásos ablakban találhatjuk meg

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 26 PDE JUnit működés  Hol legyenek a tesztek? −Lehet a tesztelendő plug-inban is −De! ●A JUnit függőségeket be kell építeni ●Keveredik a kód és a teszt −Tegyük külön plug-inba, ami könnyen leválasztható ●Ez függ az eredeti plug-in-től

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 27 Mit teszteljünk?  Nyilván csak a meghajtható részek (API) tesztelhető  Nincs lehetőség közvetlen GUI tesztre −Rational Robot  Amit tesztelni szeretnénk, látható kell legyen  Erősen függ a konkrét plug-intól

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 28 Gyakori kiterjesztések

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 29 View  Általános információ-megjelenítő elem  Extension point: −org.eclipse.ui.views −If: IViewPart  Sokféle lehetőség van információ megjelenítésére −Tartalmazhat SWT és JFace elemeket is

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 30 Példa: View public class View extends ViewPart { public static final String ID = "raktarAppFrontend.view"; private TreeViewer viewer; public void createPartControl(Composite parent) { //View controls initialization } /** * Passing the focus request to the viewer's control. */ public void setFocus() { viewer.getControl().setFocus(); }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 31 View  setFocus metódus −Hova kerüljön a fókusz? −Nekünk kell megmondani… −Program to API contract rule: „Check and program to the Eclipse API contract.” −Ezt a metódust nekünk nem szabad hívni! −Helyette: IWorkbenchPage.showView(String) −És: IWorkbenchPage.activate(IViewPart)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 32 View  Általános információ-megjelenítő elem  Extension point: −org.eclipse.ui.views −If: IViewPart  Sokféle lehetőség van információ megjelenítésére −Tartalmazhat SWT és JFace elemeket is

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 33 Menü elemek  Pop-up menü: ActionSet-ek (már volt)  Context Menü −Jobbgombra előugró menü egy adott elemen −Invitation rule-> általában mindegyik context menü fogad új elemeket −Elemek: Action-ök, separator-ok −Két speciális elem, amik közé mások menü elemei kerülhetnek (MB_ADDITIONS) −Hozzáadás: org.eclipse.ui.popupMenus ●A View megadásával

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 34 Perspektívák  Layot-ot definiál a megjelenítendő view-k és editorok számára  Pl. Java/Debug/Resource perspektívák  Perspektíva kiegészítése −Megadható hol jelenjen meg a view, ha megnyitják −Kezdetben látható legyen a view?  RCP alkalmazásoknál teljesen új perspektívát készítünk! (programozottan)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 35 Help  Minden plugin tartalmazhat help-et  Alapelem: TOC – Table of contents −Fa −Más toc-okat és topic-okat tartalmaz  Topic −Egy html fájl  Extension point: org.eclipse.help.toc  Lehet különálló plugin (nem keveredik a kóddal)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 36 Help készítése  A fő toc: toc.xml-ben (konvenció) …

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 37 Help  Topic elemek −Van címkéjük −Van egy fájl hivatkozás a tartalmukra −Ha a címkét kiválasztjuk, betöltődik a megadott fájl −A HTML minden elemet tartalmazhat, amit általában (képek, linkek, …)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 38 Help – plugin.xml …

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 39 Integrált Help  Topic hozzáadása létező help-hez  Pl. határtalan tudásunkkal gyarapítni szeretnénk a beépített PDE súgót  Anchorok helyezhetőek el a toc-ban (invitation rule)  Toc link_to attribútum -> útvonal a toc gyökeréhez (az anchorhoz)  Példa:

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 40 Context sensitive help  „F1” szindróma  Hozzárendelés: −WorkbenchHelp.setHelp(Control,String)  Help context extension: −Egy xml fájl, ami leírja a context-eket (mely topicok jelennek meg, …) + egy description (általános szöveg) −Ezt az xml-t mint org.eclipse.help.context extension-t kell bejegyezni

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 41 Internationalization  A plug-inok nemzetközivé tétele, többnyelvűsítése  Első lépésben eltávolítjuk a string konstansokat a kódból és egyéb fájlokból, hogy könnyen cserélhető legyen a felület szövege

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 42 I18N – plugin.xml  A plugin.xml egyes szövegei csak a rendszer számára láthatóak (extension id, …) ezeket nem kell lefordítani  Másokat viszont a felhasználó is lát (action label) – ezeket ki kell szedni, hogy könnyen le lehessen fordítani −plugin.properties – név érték párok −%név – az adott helyre behelyettesíti a talált értéket  feature.xml-nél hasonló módszer (feature.properties)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 43 I18N – forráskód  A Java forráskód egy része felhasználó számára látható szöveget tartalmaz (gombfelirat, üzenetek…) – ezeket ki kellene szedni…  Más stringek viszont fontos rendszer- konstansokat tartalmaznak (id, …) – ezekenek maradni kell  Megoldás: megjelöljük a maradókat: //$NON-NLS-1$

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 44 I18N – forráskód  Előkészületek: −Resource bundle létrehozása a plug-in-hoz (akrá több is) −Minden bundle-be rakjunk egy properties fájlt (pl. messages.properties), és egy helper osztályt, mely ezt betölti −A kulcsok legyenek kvalifikáltak, hogy ne legyen ütközés (pl. Osztaly.elem.attributum)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 45 Eclipse támogatás  Source -> Externalize strings −Megkeresi a stringeket, létrehozza a bundle-t és a beolvasó segédosztályt. −Mindent elrendez nekünk

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 46 Probléma - publikálás  Mit tegyünk a plugin publikálásakor?  Várjuk meg az összes fordítást? – időveszteség  Adjunk ki új verziót minden fordításkor? – bonyolult  Megoldás: fragment-ek − Külön elemek, melyek a plugin egy részét tartalmazzák – nyelv vagy platform specifikus elemekhez találták ki

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 47 Accessibility  A plugin legyen elérhető hátrányos helyzetűek számára is −Minden funkció legyen elérhető billentyűzetről −Az elemekhez rendeljünk cimkéket, hogy a felolvasó programok számára legyen elégéséges információ −A színeket csak mint kiterjesztést használjuk −Tegyük lehetővé erős kontrasztos üzemmód használatát −A hangjelzések és kép legyen kiváltható

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 48 A plugin megnyitása más programozók számára  API definiálása −Meg kell határrozni, mely interfészek, osztályok látszanak, melyeket kell másoknak használni −Csak a szükségeseket exportáljuk −Az exportán megadhatunk egy prefixet is az osztálynevekre -> teljesítmény!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 49 Belső és nyilvános csomagok  Explicit API rule: „Separate the API from internals” −Lehetőleg világosan el legyen választva a nyilvános API és a belső osztályok (pl. külön csomag)  Stability rule: „Once you invite others to contribute, don’t change the rules” −Lehetőleg tartsuk stabilan az API-t  Defensive API rule: „Reveal only the API in which you have confidence, but be prepared to reveal more API as clients ask for it.” −Csak a stabil részeket mutassuk meg

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 50 Core és UI  A nagy komponensek általában külön plug-inbe helyezik a belső működést és az UI-t  Ez praktikus, és kikényszeríti a kettő közötti interfész definiálását −Könnyen cserélhető, kiegészíthető GUI −Külön-külön fejleszthető elemek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 51 Extension point  A hivatalos kiegészítési mechanizmus alapeleme  Fontos, hogy definiáljunk hozzá megfelelő sémát! −Ez adja meg a használható elemeket