Possiamo scrivere codice java utilizzando anche maven, in questo specifico caso questo tool ci aiuta a seguire una convenzione standard di posizionamento delle cartelle Questa è la struttura standard Maven Le classi dell’applicazione sono dentro la cartella src/main/java e i testi sono dentro src/test/java il file pom.xml descrive il nostro progetto

Possiamo specificare che il test è di tipo parametrico usando il decoratore @ParameterizedTest, per specificare invece quali sono i parametri in ingresso si può utilizzare il decoratore @CsvSource

public class CalcTest {
	private final Calc calculator = new Calc();
	@ParameterizedTest
	@CsvSource({
		"1, 1, 2",
		"2, 3, 5",
		"10, 5, 15",
		"-1, 1, 0"
	})
	void testAdd(int a, int b, int expected) {
		int result = calculator.add(a, b);
		assertEquals(expected, result);
	}
}

Durante l’esecuzione di un test si esegue una parte dell’applicazione, in un progetto molto complicato è importante tenere a mente quali righe di codice vengono testate, questo dato viene espresso usando la Copertura del codice definita come il rapporto tra le righe di codice eseguite dai test e quelle totali

ha spiegato diverse funzioni dentro vscode

Questo è un esempio di test, dopo aver testato con il tasto testWithCoverage, ci dice precisamente quanta percentuale di codice è stata testata

Programmare specificando delle precondizioni significa seguire il design by contract ovvero prima ancora che il codice venga eseguito ho delle condizioni nel codice che non lo fanno neanche compilare in caso di problemi

Genereare un progetto con maven ci aiuta a gestire in modo migliore tutto il progetto: dalla compilazione, alla gestione delle dipendenze, il test, il rilascio ecc…

Tutto viene specificato dentro il file POM (Projetct Object Model) qui troviamo la versione, i plugin, le estensioni e varie informazioni.

Una volta creato il progetto usando maven dentro vscode vedremo questo menù in basso a dx, dove troviamo tutte le informazioni riguardanti il nostro progetto maven

Abbiamo finito L2_Test.pdf e siamo passati a L3_Refactoring.pdf

Il Refactoring è il processo che cambia un un sistema software in modo che il comportamento esterno non cambi, ma fa sì che la struttura interna sia migliorata, molte volte fare refactoring significa trasformare il codice in metodi più semplici e leggibili. Ci sono diverse tecniche per fare questa cosa, nel corso ne vedremo una decina.

Ci sono diversi vantaggi se si fa refactoring:

  • la dimensione del codice si riduce
  • la struttura diventa più semplice
  • si evita di introdurre debito tecnico all’interno della proggettazzione

debito tecnico: indica una situazione in cui per poter arrivare a certe scadenze di produzione del software agiamo con velocità e produciamo del codice che non ha una struttura ideale, se questa cosa viene fatta continuamente si arriva ad un certo punto in cui il nostro software è scritto male. Fare refactoring risolve questo problema.

Cambiare il codice per fare refactoring è rischioso, perché modificando il codice potremmo introdurre dei bug, per questo è importante creare i test, questi ci aiutano a capire se le funzionalità sono rimaste le stesse anche cambiando il codice