Å trene på Java EE

For å bli bedre må man trene. For å bli bedre med avanserte ting, må man forstå de grunnleggende tingene bra. For å vite hvorfor man bruker avanserte verktøy, må man prøve å jobbe uten dem. Derfor har jeg de siste ukene trent mange ganger på å lage en veldig enkel webapplikasjon i Java. For hele applikasjonen har jeg startet med å skrive testene før koden som implementerer funksjonaliteten.

Dersom du vil prøve deg på samme øvelse, inneholder denne artikkelen litt informasjon for å komme i gang. Start med koden under og følg feilmeldingene. Send en kommentar dersom du ikke kommer videre fra en feilmelding, så får vi en FAQ.

Oppgaven

Løs et så enkelt som mulig problem som involverer websider og database med så enkel teknologi om mulig.

Oppgaven jeg har laget går ut på å opprette personer med fullt navn og søke etter personer basert på navnet deres. For å gjøre oppgaven så lite som mulig har jeg valgt å la personer kun ha ett informasjonsfelt: Fullt navn. Denne oppgaven tar cirka 2-3 timer uten øvelse og du kan få den ned i 60-90 minutter med trening.

Du kan naturligvis velge en annen oppgave, men uansett hva du velger: Det er mer lærerikt å gjenta den samme oppgaven flere ganger enn å utføre en avansert oppgave.

Når jeg utfører oppgaven er det viktigste jeg lærer meg å forstå feilmeldingene som guider meg gjennom utviklingen. Dersom du trenger hjelp til å komme til de første feilmeldingene kan du se resten av artikkelen.

Steg for steg: Startpunktet

Selv om jeg valgte veldig enkel teknologi for implementasjonen, har jeg valgt et større sett med biblioteker for å skrive testene. Jeg bruker følgende når jeg skriver testene:

  • JUnit 4.6
  • Jetty 6.1.22
  • HSqlDb 1.8.0.10
  • WebDriver-HtmlUnit 0.6.1039
  • Mockito 1.8.0
  • FEST-assert 1.2 (ikke påkrevd, men gjør testene søtere)

Den eneste teknologien jeg har valgt for implementasjonen er Servlet-API 2.5 og Hibernate-Annotations 3.4.0.GA.

For at du skal slippe å plundre så mye med avhengigheter før du kommer i gang har jeg laget en pom.xml-fil som du kan ta utgangspunkt i.

Web-tester

For å starte utviklingen, er det lurt med en test som starter på utsiden av applikasjonen. Noe slikt:

  1. Start opp miljøet
  2. Legg inn en person
  3. Søk etter personen

Slik kommer du i gang med en test som går mot en web applikasjon:

Dette oppsettet forventer å finne web.xml-fila på src/main/webapp/WEB-INF/web.xml.

Funksjonell test

En funksjonell test definerer kravene i applikasjonen. Det er lurt å gjøre funksjonelle tester så raske som overhode mulig, samtidig som de går gjennom alle kravene. En funksjonell test trenger ikke være en ende-til-ende test, slik som eksempelet over. Dette er viktig, fordi ende-til-ende tester er ofte veldig trege. Her er noen eksempler på funksjonelle tester:

  • Vis en siden for å opprette nye personer
  • Opprett en ny person
  • Verifiser at personens navn er oppgitt og ikke inneholder ulovlige tegn
  • Vis en side for å søke etter personer
  • Vis alle personer dersom søkestreng ikke er angitt
  • Søk etter angitt søkestreng

En funksjonell test kan se slik ut:

Data-aksess-test

Hibernate forenkler databasebruken mye. Men Hibernate er selv komplekst og når man bruker det på mer avanserte måter fortjener det egne tester. En typisk test med Hibernate kan være:

  1. Legg i tre personer i database
  2. Søk etter en del av navnet på en av dem
  3. Sjekk at du får tilbake akkurat den du forventet

Når jeg starter med Hibernate, lager jeg en test som dette, og følger feilmeldingene. Pass på å både følge feilmeldinger i loggen og stack tracer.

Følg feilmeldingene herfra.

Integrasjon

En veldig vanlig måte for web serveren å overlevere spesielt ting som DataSources til applikasjonen er via JNDI. I Jetty kan du gjøre dette i Web-testen på følgende måte:

Konklusjon

Å gjøre en liten øvelse som dette er en god måte å bli bevisst hvilke vaner du har og hvor lang tid det egentlig tar for deg å gjøre oppgavene dine. Du vil oppleve at det å skrive tester før koden føles som om det går saktere enn du tror du er vant til.

Men dersom du er som meg, vil du også oppleve noe annet: Når du tester ut applikasjonen første gang (du kan gjøre dette med Jetty, naturligvis) så er sjansene gode for at den vil være nokså feilfri og at debugging i stor grad er overflødig. Jeg vet ikke med deg, men debugging er en aktivitet jeg gjerne blir kvitt.

Creative Commons License
Å trene på Java EE by Johannes Brodwall, unless otherwise expressly stated, is licensed under a Creative Commons Attribution 3.0 Unported License.

About Johannes Brodwall

Johannes is the director of software development for the MRM product company BrandMaster. In his spare time he likes to coach teams and developers on better coding, collaboration, planning and product understanding.
This entry was posted in Extreme Programming, Java, Norsk, Software Development. Bookmark the permalink.
  • heim

    Det er spennende å lese om erfaringene med hva vi kan kalle “avanserte” katas. Dette er bread and butter for Java EE-utviklere. Vanlige, enkle, ukompliserte katas hjelper utvikleren å bli bedre kjent med red-green-refactor-teknikken. På det avanserte nivået øver vi på de teknikkene vi bruker til daglig.

    For utviklere som er nybegynnere innen TDD kan jeg ikke anbefale å starte med en så avansert kata som dette, men for den viderekommende så er det slike ting som dette som man bør øve på.

    Jeg ser fram til det tidspunktet hvor en gruppe kan ta for seg en slik problemstilling på f.eks. Oslo Coding Dojo, da har vi kommet langt som profesjonelle.

  • heim

    Det er spennende å lese om erfaringene med hva vi kan kalle “avanserte” katas. Dette er bread and butter for Java EE-utviklere. Vanlige, enkle, ukompliserte katas hjelper utvikleren å bli bedre kjent med red-green-refactor-teknikken. På det avanserte nivået øver vi på de teknikkene vi bruker til daglig.

    For utviklere som er nybegynnere innen TDD kan jeg ikke anbefale å starte med en så avansert kata som dette, men for den viderekommende så er det slike ting som dette som man bør øve på.

    Jeg ser fram til det tidspunktet hvor en gruppe kan ta for seg en slik problemstilling på f.eks. Oslo Coding Dojo, da har vi kommet langt som profesjonelle.

  • Oddbjorn Lona

    Om en noe sent, så komplimenterte denne videoen (http://johannesbrodwall.com/2010/05/02/six-idea…), eller er det omvendt. Skulle jeg kanskje hadde begynt med denne her først.

    Takk for at du tar tiden til å skrive dette.

  • aamonty

    Title:
    Small laptop guru

    There has been a lot said about small laptops and their ability to match a regular laptop in terms of specification or performance. Small laptop is just a regular laptop with a smaller screen, making it more lightweight and more portable. The small laptops which are known as netbooks are not really designed as a replacement to your work horse regular sized laptop. They are more designed as a portable web device where you can check your email and surf the web to get some information or an update you are expecting. The three key things of latest small laptop are Processor, Memory, also known as Random Access Memory (RAM) and also the Operating System (i.e. Windows and Linux). SMALL LAPTOP GURU is a website which provides information, technical specifications, reviews and advice on the latest small laptops and netbooks. Via this website we can know about small laptop of the different brand such as Acer, Asus, Compaq, Lenova etc. We can also know the cost of small laptop via this site. And also the privacy policy and any other relevant terms, conditions, policies and notices which may be applicable to a specific section or module of this website.
    For more please visit: http://www.smalllaptopguru.com/

  • aamonty

    Title:

    Family Needs

    Keyword:
    Trampoline, food storage, diaper bags

    Description:

    These days, people are doing their best to be prepared for life's unexpected circumstances. Everybody is also trying to save money every way they can. Spending time at home is a great way to save money. Kids love things like jumping on trampolines and that can be done in your own backyard. A trampoline is cost effective and will provide hours of fun for the whole family. If you have a good food storage supply then having the food necessary for a great meal at home is a snap. Having a good supply of long term food storage is a great way to save money and be prepared. Preparation is so important in the event of a disaster. Having a quality diaper bag packed full of baby gear is another important way you can prepare your family for an emergency!

    For more please visit:
    http://trampolineheadquarters.com
    http://foodstoragedepot.com
    http://thediaperbagcenter.com

  • aamonty

    Title:

    Public Relation
    Press release distribution is a website which offers a variety of affordable and proven press release services for businesses and individuals. It’s an innovative and professional public relations company with the power to get your message out to major media and wire services such as the AP, UPI and Reuters. With its distribution services you can be sure that your news releases are actually read by journalists, news editors, and broadcasters. There are lots of categories in this website for press release such as art and music, books and literature, business and marketing etc. Its distribution services are targeted to fit your market segment perfectly. And this company understands how press release and search engine optimization work together. That's why it offers special press release optimization service for search engines.

    For more please visit: http://www.pressdr.com/

  • Amit

    Title:-
    Calgary Mortgage Expert
    Keyword:-
    Mortgage broker, Mortgage lenders
    Link:-
    http://www.CalgaryMortgageLending.com
    Description:-
    Jackie Frost is a Mortgage Specialist serving clients in the Calgary area. As a mortgage broker, Jackie has access to over 40 lenders allowing her to find the perfect mortgage solution for her clients, saving them both time and money.
    For more please visit: http://www.CalgaryMortgageLending.com

  • aamonty

    Title:-
    Calgary Mortgage Expert
    Keyword:-
    Mortgage broker, Mortgage lenders
    Link:-
    http://www.CalgaryMortgageLending.com
    Description:-
    Jackie Frost is a Mortgage Specialist serving clients in the Calgary area. As a mortgage broker, Jackie has access to over 40 lenders allowing her to find the perfect mortgage solution for her clients, saving them both time and money.
    For more please visit: http://www.CalgaryMortgageLending.com

  • aamonty

    Title:
    Computer Memory
    Keyword:
    Computer Memory
    Link:
    http://www.memorydepot.com
    Description:
    Memorydepot.com brings the Latest Technology to the service of the Customer. It’s now provides the biggest selection of memory products available on the Internet. It has done everything possible to provide you with the #1 Store Solutions for Memory products. It makes sure you get the memory you need when you want it, simply by offering you the best selection of memory product available on the Net. Its standards for customer support are very high. Its mission is to offer you our best quality of service possible.
    For more please visit: http://www.memorydepot.com

  • aamonty

    USA vs. Ghana

    Watch live exciting FIFA world cup match of USA vs. Ghana on your pc

    26 June

    Rustenburg

    20:30

    http://watch-live-footballworldcup.blogspot.com

  • aamonty

    Sony is soon going to release its latest product in the gaming console line, the Sony PlayStation 4. It is confirmed the Sony is working on the new console. The gaming console market has always been hot with the rivalry between Nintendo, Microsoft and Sony and in the future, all of them are going to come up with their latest products. The current plan is PS4, Cell BE-based from the original look of the PLAYSTATION + Cell IS as close to the expansion strategy, the reality seems to be no different.
    For more please visit: – http://www.sonyps4deals.com/

  • Amit

    Kona fishing for Marlin and Kona marlin tournaments aboard the Sea Strike. Kona fishing for tournaments, world record Marlin, & sport fishing charters on the Kona Coast.

    For more please visit the site: http://www.kona-fishing.com

  • aamonty

    Title:
    Mack and Jack's Marketing Solutions
    Keyword:
    Corporate Branding, Marketing, Advertising, Graphic Design, Website Design, Printing, and Promotional Product Company
    Link:
    http://www.macknjacks.com/
    Description:
    Mack and Jack's Marketing Solutions provides to the clients Corporate Branding Success in Tempe, AZ and National as well. We specialize in getting you noticed. Our key competencies are Print (from a business card to a vehicle wrap, including large format and direct mail), Graphic & Web Design (Marketing Collateral, SEO and Social Media included), and Promotional Items (Screen printing, Embroidery, T-Shirts, Hats, Key Chains, etc. We have just a little over 1 million items to choose from) hopefully we can find something that you would like.
    For more please visit: http://www.macknjacks.com/

  • aamonty

    Finance Banter, part of the Banter Network, brings some of the best minds in investing to one site. Our writers have extensive experience in the markets and share their insights with you right here. We believe that education and experience are crucial to success in the market and through the articles on our site; we share with you the knowledge and experience of our market professionals.

    Additionally, for those looking for that extra level of insight, we offer several premium services where you can take a deeper peek inside the minds of our professionals. Be it a daily look over the shoulder of a professional trader, the insight of an expert value investor or the strategies of a professional options investor, you will take your development to a new level with our premium services.
    For more please visit: http://www.financebanter.com/

  • http://www.bootsforcheap.us ugg boots

    Actually see UGG boots style also know, thick, put it on the silly figure scale, particularly easily destroy appear coarse, short legs, or legs and common some very small and not very thin MM wear skirts in UGG collocation, not good-looking and influence temperament. I suggest the MM figure general height or choose as far as possible UGG boots to match short skirt, shorts or jeans, can avoid to highlight the shortcomings, UGG short stature or for tall canister boots, thinner or leg is very fine MM. Don’t use UGG collocation is very fat, legging with best pants pants, stars or render the collocation of snowboarding progresses in our body is appropriate, caution is, or don’t match. There must be something that you satisfiedugg classic cardy boots Coach bags Nike Dunk LowSheepskin Boots

  • aamonty

    DinarInc is a worldwide wholesaler of the Iraqi Dinar. The Iraqi Dinar is the currency (or money) of the country of Iraq. The website gives the investor an opportunity to become educated about the country of Iraq and the currency the Iraqi Dinar. DinarInc has a 30 minute video on its home page by the man selected by the United States government to rebuild Iraq, Admiral David Nash. He was responsible for the first 18 billion dollars spent and the first 1500 projects selected.
    The idea behind the opportunity of the Iraqi Dinar is simple: The more oil Iraq produces the more successful the country will be giving the dinar a rise in return.
    For more please visit: http://www.dinarinc.com/

  • Ornob_jlx

    My goal is for every member of the audience to leave with tangible down-to-earth ideas and skills they can start implementing before they exit the conference room. Taking action creates results. Tell me the perfect outcome for your audience, and I will create a custom presentation that exceeds your expectations.
    http://www.globalspeakerforce.com/keynotespeake

  • Ornob

    http://www.bannersbylinda.com/…..Banner design and printing resources. Effective vinyl banner design and vinyl banner printing techniques. Roller banners, digital banner and custom banners design planning. Trade show banner displays and trade show banner display tips and tricks…