Vai al contenuto

Guida ai Test

Framework di Test per Modulo

Modulo Framework Test Versione Coverage Tool
GeCo.Alfa JUnit 4, Vaadin TestBench 4 4.x -
GecoService JUnit 4 4.x -
ElaborazioneService JUnit 4, Mockito 1.9.5 -
ConnessioneService JUnit 4 4.x JaCoCo 0.8.1
MobileFineAdapterServer Spring Boot Test 1.5.8 -
REST (Quarkus) JUnit 5, QuarkusTest 2.16.5 -
MLib JUnit 4 4.x -

Eseguire i Test

# Test di un singolo modulo
cd <modulo> && mvn test

# Test con report coverage (ConnessioneService)
cd ConnessioneService && mvn test jacoco:report

# Test Quarkus (con database H2 in-memory)
cd REST && ./mvnw test

# Saltare i test durante il build
cd <modulo> && mvn clean package -DskipTests

Scrivere Test

Test JUnit 4 (Moduli Legacy)

import org.junit.Test;
import static org.junit.Assert.*;

public class VerbaleControllerTest {

    @Test
    public void testCalcoloScadenza() {
        // Arrange
        VerbaleController controller = new VerbaleController();
        Date dataVerbale = new Date();

        // Act
        Date scadenza = controller.calcolaScadenza(dataVerbale, 60);

        // Assert
        assertNotNull(scadenza);
        assertTrue(scadenza.after(dataVerbale));
    }

    @Test(expected = IllegalArgumentException.class)
    public void testCalcoloScadenzaDataNull() {
        VerbaleController controller = new VerbaleController();
        controller.calcolaScadenza(null, 60);
    }
}

Test con Mockito (ElaborazioneService)

import org.junit.Test;
import org.mockito.Mockito;
import static org.mockito.Mockito.*;

public class PdfGeneratorTest {

    @Test
    public void testGenerazionePdf() {
        // Mock del DAO
        VerbaleDao mockDao = mock(VerbaleDao.class);
        when(mockDao.findById(1L)).thenReturn(new VvVerbale());

        PdfGenerator generator = new PdfGenerator(mockDao);
        byte[] pdf = generator.genera(1L);

        assertNotNull(pdf);
        verify(mockDao).findById(1L);
    }
}

Test Spring Boot (MobileFineAdapter)

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class RestControllerCaricoTabelleFisseTest {

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void testCaricaTabelle() {
        ResponseEntity<String> response = restTemplate
            .withBasicAuth("user", "pass")
            .getForEntity("/mobile/api/tabelleFisse", String.class);

        assertEquals(HttpStatus.OK, response.getStatusCode());
    }
}

Test Quarkus (REST Module)

import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;

@QuarkusTest
public class VerbaleResourceTest {

    @Test
    public void testRicercaVerbale() {
        given()
            .header("X-Realm", "c_a662")
            .contentType("application/json")
            .body("{\"numero\": \"12345\"}")
        .when()
            .post("/verbale/ricerca")
        .then()
            .statusCode(200);
    }
}

Test Esistenti

File Test Modulo Cosa Testa
Geco_alfaTest.java GeCo.Alfa Test UI con Vaadin TestBench
MTableTest.java GeCo.Alfa Widget MTable personalizzato
MTextFieldTest.java GeCo.Alfa Widget MTextField personalizzato
TestMObjectConverter.java GeCo.Alfa Convertitore di oggetti
DocFly.java ConnessioneService Test integrazione DocFly

Cosa Testare

Priorita Alta

  • Business logic: Calcolo scadenze, importi sanzioni, punti patente
  • Validazione input: Codice fiscale, targhe, IBAN, date
  • Integrazioni PA: Mock delle chiamate esterne (ANPR, PND, INAD)
  • Endpoint REST: Autenticazione, autorizzazione, formato risposte

Priorita Media

  • DAO/JPA: Query complesse, paginazione, ordinamento
  • PDF generation: Verifica template e contenuto PDF
  • Conversioni: DTO <-> Entity, formati data, encoding

Non Testare

  • Getter/setter semplici
  • Configurazione framework (Spring, Vaadin)
  • Codice generato (SOAP stub, JPA metamodel)

Coverage

# Genera report coverage (ConnessioneService)
cd ConnessioneService && mvn test jacoco:report

# Report disponibile in:
# target/site/jacoco/index.html

Obiettivo coverage: >70% per codice business logic.