Testar código que manipula arquivos com o JUnit em geral é muito chato. Os testes ficam cheios de código que usa a API de io do Java e que deixa de expressar o comportamento do código.
A classe TemporaryFolder do JUnit 4.7 tem uma API para criar arquivos e diretórios dentro de um diretório temporário. Essa classe usa o mecanismo de @Rule do JUnit 4 apagar arquivos depois de cada teste (depois até do @After do teste atual).
public class FileUploaderTest { @Rule public TemporaryFolder folder = new TemporaryFolder(); private static final String INPUT_FILENAME = "input.ext"; private static final String OUTPUT_FILENAME = "output.ext"; private FileUploader fileUploader; private File inputFile; private File outputDir; @Before public void setUp(){ outputDir = folder.newFolder("outputDir"); fileUploader = new FileUploader(outputDir); inputFile = new File(INPUT_FILENAME); } @Test public void shouldWriteTheUploadedFile() throws IOException{ inputFile = folder.newFile(INPUT_FILENAME); fileUploader.upload(inputFile, OUTPUT_FILENAME); File outputFile = new File(outputDir, OUTPUT_FILENAME); assertTrue(outputFile.exists()); } @Test(expected=FileUploadException.class) public void inputFileShouldNotBeADirectory(){ inputFile = folder.newFolder(INPUT_FILENAME); fileUploader.upload(inputFile, OUTPUT_FILENAME); } }