2013-05-11 12 views
11

La documentazione per JUnit's TemporaryFolder rule afferma che crea i file e le cartelle che sonoPerché JUnit TemporaryFolder non è stato eliminato?

"garantiti per essere eliminati quando le finiture dei metodi di prova (se si tratta ha superato o meno)"

Tuttavia, affermando che il TemporaryFolder non esiste non riesce:

import static org.junit.Assert.*; 

import org.junit.After; 
import org.junit.Before; 
import org.junit.Rule; 
import org.junit.Test; 
import org.junit.rules.TemporaryFolder; 

public class MyTest { 

    @Rule 
    public TemporaryFolder _tempFolder = new TemporaryFolder(); 

    @After 
    public void after() { 
     assertFalse(_tempFolder.getRoot().exists()); //this assertion fails! 
    } 

    @Test 
    public void pass() throws IOException { 
     assertTrue(true); 
    } 

Inoltre vedo che il file esiste effettivamente sul file system.

Perché non viene eliminato?

+0

La cartella temporanea non sarà cancellato se c'è un blocco (ad esempio non OutputStream chiuso) su qualsiasi file all'interno della cartella Temp. – Cengiz

risposta

9

Questo perché JUnit chiama dopo() prima di rimuovere la cartella temporanea. Puoi provare a controllare la cartella temporanea in un metodo @AfterClass e vedrai che è stato rimosso. Questo test dimostra

public class MyTest { 
    static TemporaryFolder _tempFolder2; 

    @Rule 
    public TemporaryFolder _tempFolder = new TemporaryFolder(); 

    @After 
    public void after() { 
     _tempFolder2 = _tempFolder; 
     System.out.println(_tempFolder2.getRoot().exists()); 
    } 

    @AfterClass 
    public static void afterClass() { 
     System.out.println(_tempFolder2.getRoot().exists()); 
    } 

    @Test 
    public void pass() { 
    } 
} 

uscita

true 
false 
+0

Grande, grazie! La documentazione è un po 'fuorviante qui. – jveldridge

+1

Ho lo stesso problema, lo provo nell'AfterClass e non lo cancella neanche, ho provato a chiudere tutti i flussi aperti, Cos'altro può causare la cancellazione della cartella e dei file temporanei – Snedden27

Problemi correlati