Domanda

Il framework JUnit contiene 2 classi Assert (in diversi pacchetti, ovviamente) e i metodi su ciascuno sembrano essere molto simili. Qualcuno può spiegare perché questo è?

Le classi a cui mi riferisco sono: junit. framework.Assert e org. junit.Assert .

È stato utile?

Soluzione

Il vecchio metodo (di JUnit 3) era quello di contrassegnare le classi di test estendendo junit.framework.TestCase . Ciò ha ereditato junit.framework.Assert stesso e la tua classe di test ha acquisito la capacità di chiamare i metodi di asserzione in questo modo.

Dalla versione 4 di JUnit, il framework utilizza Annotations per contrassegnare i test. Quindi non è più necessario estendere TestCase . Ciò significa che i metodi di asserzione non sono disponibili. Ma puoi effettuare un'importazione statica della nuova classe Assert . Ecco perché tutti i metodi assert nella nuova classe sono metodi statici. Quindi puoi importarlo in questo modo:

import static org.junit.Assert.*;

Dopo questa importazione statica, è possibile utilizzare questo metodo senza prefisso.

Alla riprogettazione si sono anche spostati nel nuovo pacchetto org.junit che segue meglio le normali convenzioni per la denominazione dei pacchetti.

Altri suggerimenti

JUnit 3.X: junit.framework.Assert

JUnit 4.X: org.junit.Assert

Preferisci quello più recente, specialmente quando esegui JDK5 e versioni successive con supporto per le annotazioni.

Esiste infatti una modifica funzionale: org.junit.Assert si lamenterà se si utilizza assertEquals () con float o double , mentre junit.framework.Assert lo eseguirà automaticamente nel box automatico.

Credo che stiano eseguendo il refactoring da junit.framework a org.junit e junit.framework.Assert viene mantenuto per compatibilità con le versioni precedenti.

Ho fatto un confronto approssimativo del codice sorgente e non ci sono cambiamenti seri. Molti commenti sono stati aggiunti in org.junit.Assert e sono stati fatti alcuni refactoring. L'unica modifica è il confronto con Array . Ci sono alcune correzioni di codice, ma non c'è (imho) nessuna modifica funzionale .

In Android Studio (e anche in IntelliJ), puoi escludere globalmente junit.framework dalla proposta di importazione automatica.

È possibile impostare l'ambito tra IDE o Project . Se non disponi di progetti che utilizzano JUnit 3 puoi tranquillamente rimanere nell'ambito IDE.

Posizione di impostazione:

  

Preferenze - > Editor - > Generale - > Importazione automatica

 inserisci qui la descrizione dell'immagine

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top