2010-08-11 1 views
32

La mia intenzione è utilizzare il metodo assertArrayEquals(int[], int[]) JUnit descritto in the API per la verifica di un metodo nella mia classe.Utilizzo di assertArrayEquals in unit test

Ma Eclipse mi mostra il messaggio di errore che non è in grado di riconoscere un tale metodo. Queste due importazioni sono in vigore:

import java.util.Arrays; 
import junit.framework.TestCase; 

Mi sono perso qualcosa?

+0

Quale versione di JUnit stai usando? Hai già usato le affermazioni di JUnit? Sei sicuro di volere un test unitario e non ad es. metodi 'java.util.Arrays.equals/deepEquals'? – polygenelubricants

+0

Francamente non so quale versione di JUnit sto usando, ma so di aver scaricato Eclipse Version: 3.5.1 e JUnit è stato incluso. Non ho ancora usato asserzioni JUnit, sto solo imparando. E sì, voglio test unitari. – Eugene

+0

Ho scoperto - è JUnit3. – Eugene

risposta

42

Questo dovrebbe funzionare con JUnit 4:

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

public class JUnitTest { 

    /** Have JUnit run this test() method. */ 
    @Test 
    public void test() throws Exception { 

     assertArrayEquals(new int[]{1,2,3},new int[]{1,2,3}); 

    } 
} 

(risposta si basa su this wiki article)


E questo è lo stesso per il vecchio quadro JUnit (JUnit 3):

import junit.framework.TestCase; 

public class JUnitTest extends TestCase { 
    public void test() { 
    assertArrayEquals(new int[]{1,2,3},new int[]{1,2,3}); 
    } 
} 

Nota la differenza: nessuna annotazione e la classe di test è una sottoclasse di TestCase (che implementa e metodi di asserzione statica).

+1

È JUnit3 , ma sto ottenendo il messaggio: Descrizione \t Resource \t Percorso \t Località \t tipo il metodo assertArrayEquals (int [], int []) non è definito per il tipo di DeckTest – Eugene

+0

stai estendendo TestCase? Si prega di inviare un codice di esempio che mostra la classe in questione. –

+1

@AndoidNoob - Assert @ assertArrayEquals è stato introdotto con JUnit 4. Quindi è necessario passare a JUnit 4 (sempre consigliato) o verificare l'uguaglianza degli array con diverse istruzioni Java (eseguire il ciclo attraverso l'array dopo essersi assicurati che sono di le stesse dimensioni) –

5

tenta di aggiungere:

import static org.junit.Assert.*; 

assertArrayEquals è un metodo statico.

0

Se si sta scrivendo i test JUnit 3.x stile che si estendono TestCase, quindi non è necessario utilizzare il qualificatore Assert - TestCase estende affermarsi e così questi metodi sono disponibili senza il qualificatore.

Se si utilizzano le annotazioni JUnit 4, evitando la classe base di TestCase, è necessario il qualificatore Assert e l'importazione org.junit.Assert. È possibile utilizzare un'importazione statica per evitare il qualificatore in questi casi, ma questi sono considerati da alcuni poor style.

28

Questo potrebbe essere utile se si desidera utilizzare solo assertEquals senza a seconda della versione Junit

assertTrue(Arrays.equals(expected, actual));