package com.tddinaction.parameterized; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class FileDrivenTest { private final File dataFile; public FileDrivenTest(File dataFile) { this.dataFile = dataFile; } @Parameters public static Collection<Object[]> parameters() throws Exception { File[] testfiles = findTestDataFromFileSystem(); Collection<Object[]> params = new ArrayList<Object[]>(); for (int i = 0; i < testfiles.length; i++) { params.add(new Object[] { testfiles[i] }); } return params; } private static File[] findTestDataFromFileSystem() { File packageDir = new File(("./src/test/java/" + FileDrivenTest.class .getPackage().getName().replace('.', '/'))); File[] testfiles = packageDir.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".xml"); } }); return testfiles; } @Test public void testSomethingWithTheFile() { System.out.println("Testing with " + dataFile.getName()); } }