Ohjelmistojen testaus ja hallinta. Gradle



Samankaltaiset tiedostot
Viestit-palvelun viranomaisliittymän ohjelmointiohje. Java-esimerkki

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Työkalut ohjelmistokehityksen tukena

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

5. HelloWorld-ohjelma 5.1

4. Luokan testaus ja käyttö olion kautta 4.1

Ohje kehitysympäristöstä. Dokumentti: Ohje kehitysympäristöstä.doc Päiväys: Projekti : AgileElephant

KÄÄNNÖS- JA INTEGROINTIYMPÄRISTÖ

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

5. HelloWorld-ohjelma 5.1

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Scala Ohjelmointi Scala Ohjelmointi Harjoitukset

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Test-Driven Development

Versionhallintaa. Versionhallinnan käyttöönotto SAS ympäristössä

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Simulaattorin asennus- ja käyttöohje

8. Näppäimistöltä lukeminen 8.1

Harjoitustyö: virtuaalikone

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

TIE Ohjelmistojen suunnittelu

Test-Driven Development

8. Näppäimistöltä lukeminen 8.1

12. Näppäimistöltä lukeminen 12.1

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

UCOT-Sovellusprojekti. Asennusohje

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

2 Konekieli, aliohjelmat, keskeytykset

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

BL40A1810 Mikroprosessorit, harjoitus 1

Hellä ensikosketus. Tomi Kiviniemi

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Versiohallinta ja Subversion Maunu Tuomainen

AgilElephant ja CruiseControl

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Testivetoinen ohjelmistokehitys

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Eclipse ja JUnit-ohjelmoijatestit

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

T SEPA - STAATTISET MENETELMÄT Tuomas Tolvanen, 55382U Timo Töyry, 58578B

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

13/20: Kierrätys kannattaa koodaamisessakin

Automaattinen yksikkötestaus

Ohjelmointi 1. Kumppanit

Käyttöohje. Energent MagiCAD plugin

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Microsoft Visual J++ ohjelmointiympäristö

niissä olevan viallisen zlib-koodin takia. Spectra Linux 1.2:n kerneleissä tämä vika on korjattu. Raimo Koski

KONFIGURAATIOHALLINTA HAJAUTE- TUSSA JÄRJESTELMÄSSÄ

T Käyttöliittymäsuunnittelu. Tehtävä 1: Komentorivipohjainen käyttöliittymä

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

NetBeans asennus ja etäkäyttö C-kielen opiskeluun, Windows

7. Näytölle tulostaminen 7.1

Valppaan asennus- ja käyttöohje

Tämä ohje on laadittu Mozilla Firefoxin asetuksille versiossa

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Java-kielen perusteet

Pedacode Pikaopas. Web-sovelluksen luominen

Sisältö. Työn idea Protokollat. Harjoitustyön käytäntöjä. Työn demoaminen. Etäisyysvektori Linkkitila. Palvelin Moodle SSH-tunnelit

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

Eclipse, SVN ja HelloWorld

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Pakkauksen kokoaminen

Testilähtöinen ohjelmistokehitys. Testilähtöinen ohjelmistokehitys. TDD Testilähtöinen ohjelmistokehitys. Testi! Testi

Ohjelmointi 1 / syksy /20: IDE

JUnit ja EasyMock (TilaustenKäsittely)

Jatkuva integrointi ja pilvipalvelut Metropolian opetuksessa

1. NetBeans-ohjelman asennus ja käyttöönotto pva

Projektisuunnitelma Viulu

TIE Principles of Programming Languages CEYLON

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

CS-C2130 / CS-C2140 / CS-E4910 Software Project 1 / 2 / 3 ja Accenture Luento

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant

Zeon PDF Driver Trial

ESIMERKKIDOKUMENTTI JARKKO IMMONEN

CSE-C2610 Software Project I ja Accenture Luento

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

TEKNIIKKA JA LIIKENNE. Tietotekniikka. Ohjelmistotekniikka INSINÖÖRITYÖ TESTAUS JATKUVAN INTEGROINNIN OSANA METROPOLIAN OHJELMISTOTUOTANTOPROJEKTEISSA

Mobiilijärjestelmien ohjelmointi

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Topi Kasari. Jatkuvan integroinnin koontityökalut

MixW ja Dx-vihjeet (ohje) oh3htu

ITKA203 Käyttöjärjestelmät, kesä Kesäkurssi Opettaja: Paavo Nieminen

4. Lausekielinen ohjelmointi 4.1

ORGANISAATION KIRJAUTUMINEN TURVASIRU.FI-PALVELUUN

14. Hyvä ohjelmointitapa 14.1

Testitapaukset - Siirtoprotokolla

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

Transkriptio:

Ohjelmistojen testaus ja hallinta Gradle

Perinteiset koontityökalut Ant Maven 2

Maven XML-pohjaiset koontitiedostot (pom.xml) Pohjautuu käytäntöihin (vain poikkeukset käytännöistä kirjoitetaan koontitiedostoon) Projektilla tietynlainen hakemistorakenne Projekteilla tietyt työvaiheet Lähdekoodien haku versionhallinnasta Lähdekoodien kääntäminen Testien ajaminen Toiminnallisuutta saa liitännäisten (plugin) avulla Osaa hakea liitännäiset keskitetystä tietovarastosta (repository) 3

Maven Maven on laaja ja hankala Ei taivu kovin hyvin erilaisiin projekteihin, jos poiketaan Mavenin käytännöistä. 4

Maven esimerkki Esimerkissä yksinkertainen Maven koonti Projektissa toteltu Mavenin käytäntöjä, joten itse koontitiedostossa ei ole juuri mitään 5

Ant XML-pohjaiset koontitiedostot Toisin kuin Maven, Ant ei oleta mitään käytäntöjä Taipuu hyvin erilaisiin projekteihin Kaikki joudutaan itse määrittelemään Mistä löytyy sovelluskoodit ja testit Mitä niille tehdään ja missä järjestyksessä Ei osaa itse hakea riippuvuuksia repositoryista Voidaan käyttää apuna Ivy-työkalua Esimerkissä yksinkertainen Ant-koonti Kaikki jouduttu itse määrittelemään 6

7

Gradle Gradle on koontityökalu, joka pyrkii yhdistelemään Mavenin ja Antin hyviä puolia. Mavenin tapaan Gradlella käytäntöjä Käytännöistä poikkeaminen kerrottava koontitiedostosssa Koontitiedosto (build.gradle) Groovyskriptikielellä Osaa hakea riippuvuuksia sekä Ivyn että Mavenin repositorioista 8

Yhteensopivuus Gradle tukee sellaisenaan Antin taskien importtaamista Esimerkki: checkstyle-taskin hakeminen Antista task checkthestyle << { //Taskin lataus ant.taskdef(resource: 'checkstyletask.properties') { classpath { fileset(dir: 'libs/checkstyle', includes: '*.jar') } } //Taskin käyttö ant.checkstyle(config: 'src/tools/sun_checks.xml') { fileset(dir: 'src') } } Myös Maveniin löytyy plugin 9

Groovy Groovy on olio-ohjelmointikieli Java-alustalle Yleisimmin käytetty skriptauskielenä Javaohjelmille, esimerkiksi Gradlelle Kääntyy Java virtuaalikoneella ajettavaksi tavukoodiksi http://groovy.codehaus.org/beginners+tutori al 10

Gradle Kun Antissa kirjoitetaan targetteja, Gradlessa voi tehdä taskeja. Tietyn taskin ajaminen komentoriviltä komennolla gradle <taskin_nimi> 11

Hello world Gradlella task helloworld << { println 'Hello world!' } Tämän taskin ajaminen komentoriviltä tapahtuisi komennolla gradle helloworld Tulostaa rivin Hello World! 12

Taskien riippuvuudet Taskit voivat olla riippuvaisia toisista taskeista Aivan kuten Antissa targetit riippuivat toisistaan. task uusitask(dependson: helloworld) << { println Tämä task on riippuvainen helloworld-taskista' } Kun komentoriviltä ajetaan gradle uusitask, tulostuu ensin Hello World! ja sen jälkeen Tämä task on riipuvainen helloworld-taskista 13

Taskit Usein ei tarvetta tehdä ollenkaan omia taskeja Taskiin voi myös lisätä toiminnallisuutta jälkikäteen (esimerkki seuraavalla sivulla) 14

Esimerkki task hello hello << { print 'Hello ' } hello << { println 'World!' } Esimerkissä luodaan task, sen jälkeen lisätään taskiin rivin Hello tulostus ja sen jälkeen vielä rivin World! tulostus. Tämä voidaan taas ajaa komentoriviltä komennolla gradle hello, jolloin tulostuu Hello World! 15

Liitännäiset Omien taskien lisääminen ei välttämättä ole tarpeellista. Liitännäisten avulla saadaan valmiita taskeja, erilaisten asioiden toteuttamista varten. Esim. Java-pluginilla saadaan Javankääntämiseen liittyviä taskeja. Java-pluginilla saadaan esimerkiksi seuraavat taskit build kääntää lähdekoodit jar kokoaa jar-paketin javadoc generoi Javadocit 16

Liitännäiset Jos projekti on käytänteiden mukainen on yksinkertaisin Java-koonti siis pelkästään apply plugin: java Gradle etsii oletuksena java-lähdekoodeja src/main/java-hakemistosta ja testejä src/test/java Jos projektin rakenne on erilainen, on se määriteltävä koontitiedostossa. 17

sourcesetit Jos lähdekoodit ja testit ovat jossain muualla tulee ne määritellä erikseen sourcesettien avulla Esimerkissä lähdekoodit löytyvät hakemistosta src ja testit hakemistosta test 18

Repository Gradle osaa hakea riippuvuudet tietovarastosta Gradle tukee sekä Mavenin että Antin tietovarastoja Jos halutaan käyttää Mavenin keskustietovarastoa, määritetään se koontitiedostossa seuraavasti repositories { mavencentral() } 19

Erillaisia liitännäisiä MavenCentralissa on suuri määrä erilaisia plugineja Plugineja löytyy esimerkiksi erilaisille laaduntarkastustyökaluille pmd joka analysoi koodinlaatua findbugs etsii bugeja koodista 20

Esimerkki build.gradle apply plugin: 'java repositories { mavencentral() } dependencies { testcompile 'junit:junit:4.10' } Esimerkin koonnissa kerrotaan että käytetään java-pluginia, riippuvuudet haetaan Mavenin keskusrepositorysta ja että testcompile task on riippuvainen junitin versiosta 4.10. Ajamalla komentoriviltä gradle test, kääntää Gradle lähdekoodit, ajaa testit ja luo testien perusteella raportit 21

Gradle tasks Koonnissa saatavilla olevat taskit saadaan selville ajamalla komentoriviltä gradle tasks Seuraavalla sivulla lista taskeista, kun koonnissa käytetään Java-pluginia. 22

Gradle tasks Esimerkkitulostus: :compilejava :processresources :classes :jar :assemble :compiletestjava :process :TestResources :testclasses :test :check :build 23