1. final new static mock

    Jag måste säga det – Mockito smakar väldigt bra. Tidigare använde jag EasyMock och jMock och idag läste jag mig in på JMockit, som skriver:

    Design considerations for production code

    The problem with imposing restrictions on the design of production code is that there are good reasons for making classes final, for directly obtaining instances of collaborators with the new operator, and for using APIs based on static methods. There is nothing inherently wrong with using these three Java language keywords, after all.

    Fine. Jag kan köpa det. Men sedan går man vidare och säger

    The JMockit mocking API is simple, consistent, and minimal.

    Nu börjar det bli jobbigt att hålla med :) Låt oss ta deras exempelkod:

       public void testDoOperationAbc(final DependencyXyz mock)
       {
          new NonStrictExpectations()
          {
             AnotherDependency anotherMock;
    
             { anotherMock.doSomething("test"); result = 123; }
          };
    
          new ServiceAbc().doOperation("some data");
    
          new Verifications()
          {{
             mock.complexOperation(true, anyInt, null); times = 1;
          }};
       }

    och så jämför vi med samma sak i Mockito:

        public void testDoOperationAbc(final DependencyXYZ mock) {
            when(anotherMock.doSomething("test")).thenReturn(123);
            new ServiceAbc().doOperation("some data");
            verify(mock.complexOperation(eq(true), anyInt(), eq(null)));
        }

    eller BDD-style:

        public void doOperationCallsComplexOperation(final DependencyXYZ mock) {
            // GIVEN
            given(anotherMock.doSomething("test")).willReturn(123);
    
            // WHEN
            new ServiceAbc().doOperation("some data");
    
            // THEN
            verify(mock.complexOperation(eq(true), anyInt(), eq(null)));
        }

    I min värld är Mockito det mockningsramverk som är minst i vägen. För nyskriven kod vet jag vad mitt val faller på. Det är inte lika ”komplett” eller kraftfullt som andra ramverk, men så är det också inte i vägen. Måste man prompt använda final och static eller mocka privata metoder kan PowerMock hjälpa till.

  2. Bra verktyg för dåliga test?

    Jag sprang idag över denna demo av SpryTest – ett verktyg med vilket man kan få hjälp att skriva test som masserar legacy code (dvs kod som inte täcks av test). Nej, jag ser verkligen inte detta som en silver bullet och är tveksam till att använda det över huvud taget.

    (Läs mer…)

  3. Delta i undersökning om effektivitet inom testning

    CITCON-listan är mottagare denna gång av en inbjudan från Tanjila Kanij vid Swinburne University of Technology, där man ber om deltagande genom en webbenkät som skall ta knappt 25 minuter att fylla i.

    ”[we are] conducting a survey to find out the key factors that influence the performance of software testers”

    Om du känner dig träffad (eller känner någon som borde känna sig träffad) så är URL:en till webbenkäten http://benambra.org/survey/

  4. Koda i bubblor

    Snubblade över en länk till denna sida.

    Codebubble

    Kanske är det såhär vi kommer koda i framtiden? Ser onekligen rätt häftigt ut!

  5. Ny version av TextTest med utökad Java stöd

    TextTest är en verktyg för att stödja arbetssättet ”Text-based Testing”, som är en alternativ till klassiskt enhetstestning med t.ex. JUnit. Det nyligen kom en ny version av denna verktyg, 3.17, som har bättre stöd för Java än tidigare versioner. (Läs mer…)

  6. Apropå bananens böj

    Mistaeks I Hav Made skriver intressant om Make It Easy som jag ännu inte hunnit få användning för, men som ser ut att ha viss potential:

    To create a builder (or ”maker” in the framework’s lingo) that can be used multiple times:

    Maker<Banana> anIllegallyCurvedBananaWithinTheEU =
        a(Banana, with(curve, 45.0));
    Banana naughtyBanana = make(anIllegallyCurvedBananaWithinTheEU);

    To define makers in terms of other makers:

    Maker<Banana> aBananaThatCanBeUsedInTheManufactureOfSmoothies =
        anIllegallyCurvedBananaWithinTheEU.but(with(ripeness,1.0));
  7. XPath i Firefox

    De senaste dagarna har jag spenderat med att skriva Selenium test för en ”rik” klientapplikation skriven i Ext JS. Ett stor problem är då att Ext JS använder genererade id’n för de flesta klickbara elementen. Dessa ändras med största sannolikhet nästa gång sidan laddas och kan därmed inte användas för att identifiera ett element. Om man inte vill ge sig in och ändra i koden så finns det lite olika sätt att lokalisera element (Läs mer…)

  8. Undersökning om agil utveckling

    VersionOne ligger bakom en undersökning som de kallar State of Agile Development (2008). Jag vet inte hur de gjort sitt urval för vilka som får delta, men jag tyckte att det var intressant att se vad VersionOne anser vara agila delar/komponenter/kännetecken. Se t ex denna lista:
    (Läs mer…)

  9. Python på steroider

    Unladen Swallow heter ett Google projekt att snabba upp Python och göra det minst 5x snabbare. Google använder Python väldigt mycket i sin verksamhet och det är en av de tre viktigaste språken de har. Youtube är den sidan som ligger på plats #2 i antalet sökningar som är gjorda på en sajt och Youtube är helt skrivet i Python. Det finns mycket pengar att tjäna på att göra Python mycket fortare, eftersom det innebär att man kan minska användandet av hårdvara alternativt fler användare per cpu.
    (Läs mer…)

  10. IntelliJ Idea blir öppen källkod

    Har aldrig använt det själv men det finns ju en del som inte skulle programmera en rad kod utanför detta IDE så jag antar att dom kommer att bli glada om det här stämmer. När jag skriver detta kommer jag inte åt bloggen där det är publicerat: här

    Och här är länken från reddit: här

  11. Tack AJAX: Explosion av javascriptverktyg

    För några år sedan stötte jag ofta på ett förakt mot javascript. Kodare verkade hata detta och det var inte konstigt då många skrev kod i editorer utan något stöd och debugging skedde med alerts. Så kom ordet AJAX på allas läppar och helt plötsligt började verktygen förbättras och folks inställning blev mer positiv. Nu finns en hel uppsjö av riktigt bra verktyg både för att skriva kod, debugga och testa javascript. Webbutvecklaren Nathaniel T. Schutta har gjort en trevlig sammanställning, läs den.

  12. När Open Source är vackert

    CITCON diskuterades byggmiljöer och bland produkterna fanns givetvis Hudson, eller ”[the] nuclear plant” som en branschkollega i Göteborg så fint titulerade det :) Godsaken här är detta e-mail som skickades till citcon-mailinglistan, en knapp vecka efter konferensen avslutats:

    (Läs mer…)

  13. Git? Vem är det?

    Git Header

    Nu kände jag att det var dags att ta tag i att lära mig git. För de som inte vet är git ett versionshanteringsverktyg likt cvs, subversion eller sourcesafe (ursäkta svordomen). git är skapat av Linus Torvalds (som också är skaparen till Linux) när den fria licensen för BitKeeper drogs undan för Linuxutvecklarna.

    Det som gör git lite speciellt är att det är helt distribuerat dvs att man klonar repositories och då blir din lokala repository även en möjlig master repository om man skulle vilja. Det man kan göra är att man kan checka ut av varandra lokalt om man vill det. Sedan kan man checka in allt till den centrala repositoryn som ändå är ganska praktisk att ha. Git är självklart helt skrivit i C och är väldigt snabbt och skalbart eftersom det är byggt för att klara ett av världens största distrbuerade programvaruprojekt: Linuxkärnan.

    En väldigt bra presentation om grunderna i git finns här (video)
    Och en bra text tutorial finns här
    Git:s officiella hemsida
    GitHub: Här kan du hosta dina projekt med git

  14. IvyBeans

    Ivy logo

    För de som vill börja använda Ivy för att hantera beroenden i sina NetBeansprojekt så hittade jag häromdagen en trevlig plugin vid namn IvyBeans som förenklar processen.

    IvyBeans

  15. Continuous Integration-konferens startar i Paris

    Alldeles nu startar årets upplaga av Continuous Integration and Testing Conference Europe. Deras mailinglista har jag tipsat om tidigare och den har prenumeranter som är riktigt kompetenta får jag säga (annat är det med t e x JUnit-listan som bara handlar om ”what shoud I test – this is my class:”).

    För oss som inte har möjlighet att delta finns alltid twitter, även om det givetvis inte ger samma chans till delaktighet och erfarenhetsutbyte vid Open Space-sessionerna. Konferensen är för övrigt ”gratis” – dvs ingen avgift och ingen (Läs mer…)

Nästa sida