Spring 3+ Как создать TestSuite, когда JUnit его не распознает
Я использую Spring 3.0.4 и JUnit 4.5. Мои тестовые классы в настоящее время используют поддержку тестов аннотаций Spring со следующим синтаксисом:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration (locations = { "classpath:configTest.xml" })
@TransactionConfiguration (transactionManager = "txManager", defaultRollback = true)
@Transactional
public class MyAppTest extends TestCase
{
@Autowired
@Qualifier("myAppDAO")
private IAppDao appDAO;
...
}
Мне не нужна строка расширяет TestCase для запуска этого теста. Он не нужен при запуске этого тестового класса сам по себе. Мне пришлось добавить расширенный TestCase, чтобы я мог добавить его в классе TestSuite:
public static Test suite() {
TestSuite suite = new TestSuite("Test for app.dao");
//$JUnit-BEGIN$
suite.addTestSuite(MyAppTest.class);
...
Если я опущу расширение TestCase, мой Test Suite не будет работать. Eclipse помечает suite.addTestSuite(MyAppTest.class) как ошибку.
Как добавить тестовый класс Spring 3+ в Test Suite? Я уверен, что есть лучший способ. Я проголодался и прочитал документы. Если вы мне не верите, я хочу выслать вам все свои закладки в качестве доказательства. Но в любом случае я бы предпочел конструктивный ответ. Большое спасибо.
1 ответ
Вы правы; Тесты в стиле JUnit4 не должны расширяться junit.framework.TestCase
Вы можете включить тест JUnit4 как часть набора JUnit3 следующим образом:
public static Test suite() {
return new JUnit4TestAdapter(MyAppTest.class);
}
Обычно вы добавляете этот метод к MyAppTest
учебный класс. Затем вы можете добавить этот тест в свой большой набор:
public class AllTests {
public static Test suite() {
TestSuite suite = new TestSuite("AllTests");
suite.addTest(MyAppTest.suite());
...
return suite;
}
}
Вы можете создать пакет в стиле JUnit4, создав класс с аннотацией Suite
@RunWith(Suite.class)
@SuiteClasses( { AccountTest.class, MyAppTest.class })
public class SpringTests {}
Обратите внимание, что AccountTest
может быть тестом в стиле JUnit4 или тестом в стиле JUnit3.