Aradığınız şeyin, testler değil, parameterized testleri olduğunu düşünüyorum. Eğer sizi doğru anlarsam, çok sayıda farklı şey için aynı testini çalıştırmak istersiniz.
Parametreli bir testte, verileri döndüren ve testi çalıştırmak için JUnit'e Parameterized
runner'ı kullanmasını söyleyen statik bir yöntem bildirerek bunu yaparsınız. Her bir test sınıfı daha sonra, test yönteminin erişebileceği test verileri olarak bir argüman ile başlatılır.
@RunWith(Parameterized.class)
public class FibonacciTest {
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 }
});
}
private int fInput;
private int fExpected;
public FibonacciTest(int input, int expected) {
fInput= input;
fExpected= expected;
}
@Test
public void test() {
assertEquals(fExpected, Fibonacci.compute(fInput));
}
}
Alternatif bir yaklaşım theories olacaktır. Bir teori ile test verilerini test sınıfında @Datapoint
ile açıklanmış farklı statik alanlar olarak gömüyorsunuz ve her bir test metodu her veri noktası için tekrar tekrar denir ve spesifik veri noktası bir argüman olarak iletilir. Yine, özel Ayrıca bir sürü hayatınızı kolaylaştıracak ve [Spock] kullanabilir
@RunWith(Theories.class)
public class UserTest {
@DataPoint
public static String GOOD_USERNAME = "optimus";
@DataPoint
public static String USERNAME_WITH_SLASH = "optimus/prime";
@Theory
public void filenameIncludesUsername(String username) {
assumeThat(username, not(containsString("/")));
assertThat(new User(username).configFileName(), containsString(username));
}
}
gerçekleşmesi için koşucu ... (https://github.com/spockframework/spock) ve sahip [ test parametrelemesi için destek] (http://spockframework.github.io/spock/docs/1.0/data_driven_testing.html). – erdi