fredag 31 augusti 2012

Kod templat i eclipse för att snabba upp TDD.

I testdriven utveckling så är det repetitivt så att man börjar med testa att det går att skapa en instans av klassen som skall testas. Kod:

package se.sjv.samladkundbild.infrastructure;


import static org.testng.Assert.assertNull;
import org.testng.annotations.Test;
import se.sjv.samladkundbild.domain.entity.Kund;

public class KundQueryImplTest {

    @Test
    public void testCreate() {
        final KundQueryImpl sut = new KundQueryImpl();
        assertNotNull(sut);
    }


}

Livslängden för metoden är kort. När man skapat nästa metod så har man troligen gjort det genom att byta namn på create eller raderat den.

Dessutom så vill du ha med dig en massa junk i form av beroende till tex testNG och Mockito. Dessa importer vill man absolut inte reppetera för varje testklass man skapar. Momentet bör automatiseras så mycket det går.

Eclipse Templates

Templates to the rescue! Nås via:
/ Windo / preferences / Java / Editor / Templates

Här är mitt Eclipse templat för att skapa koden.

${staticImport:importStatic('org.testng.Assert.*')}
${imp:import(org.testng.annotations.BeforeMethod,org.testng.annotations.Test,org.mockito.Mockito)}

@Test
public void testCreate() {
    ${type} sut = new ${name};
    assertNotNull(sut);
}

Jag har bundit templatet till "create" och skriver altså följande:

create, Ctrl + space + enter

Väl inne i test stim så skapar man testmetoder en serie testmetoder. För detta använder jag följande template:


@Test
public void test${name}() {
${staticImport:importStatic('org.testng.Assert.*')}
${imp:import(org.testng.annotations.BeforeMethod,org.testng.annotations.Test,org.mockito.Mockito)}
${cursor} 
}


Jag har bundit templatet till "test" och skriver altså följande:

create, Ctrl + space + enter

som jag nämnde ovan så kan man radera create metoden efter att ha skapat en eller flera testmetoder.

Om du vill ladda ner templaten här:
https://www.dropbox.com/home/java/eclipse/public

Glöm inte att tweaka Eclipse så den gör precis som du vill:
http://sweethashtag.blogspot.se/2012/08/saker-jag-gor-for-varje-nytt-eclipse.html


Happy coding.

1 kommentar:

  1. Bra tips! Använder inga templates för tester, men det ska jag börja med. Skönt att slippa massa importer för mockito, hamcrest, junit.assert.* etc.

    Bjussar på denna template som importerar slf4j.

    ${:import(org.slf4j.Logger,org.slf4j.LoggerFactory)}
    private static final Logger _logger = LoggerFactory.getLogger(${enclosing_type}.class);

    /Nils

    SvaraRadera