Для создания динамического набора тестов необходимо использовать аннотацию @RunWith
. Есть два распространенных способа его использования:
@RunWith(Suite.class)
Это позволяет вам указать, какие классы составляют рассматриваемый набор тестов. Это эквивалентно стилю JUnit 3:
import junit.framework.TestSuite;
import junit.framework.TestCase;
public final class MasterTester extends TestCase {
public static TestSuite suite() {
TestSuite suite = new TestSuite();
suite.addTestSuite(TestClass1.class);
suite.addTestSuite(TestClass2.class);
// etc...
return suite;
}
}
Эквивалентный класс JUnit 4 будет:
import org.junit.runners.Suite;
@RunWith(Suite.class)
@SuiteClasses({TestClass1.class, TestClass2.class})
public final class MasterTester {
}
@RunWith(AllTests.class)
Это позволяет динамически указывать тесты, составляющие набор тестов. Если ваши тесты неизвестны до времени выполнения, вы не можете указать их в аннотациях. Вы можете использовать эту конструкцию вместо. Итак, если код JUnit 3:
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.framework.Test;
public final class MasterTester extends TestCase {
public static TestSuite suite() {
TestSuite suite = new TestSuite();
for (Test test : findAllTestCasesRuntime()) {
suite.addTest(test);
}
return suite;
}
}
Эквивалентный код JUnit 4 будет:
import org.junit.runners.AllTests;
import junit.framework.TestSuite;
import junit.framework.Test;
@RunWith(AllTests.class)
public final class MasterTester {
public static TestSuite suite() {
TestSuite suite = new TestSuite();
for (Test test : findAllTestCasesRuntime()) {
suite.addTest(test);
}
return suite;
}
}