Ответ 1
Сделайте родительский класс abstract
или переименуйте его, например, он не заканчивается на Test
или TestCase
.
У меня есть несколько базовых тестовых классов, которые устанавливают общие конфигурации для spring, logging, jndi и т.д., используя тестовые исполнители, которые затем унаследованы подклассами. Это делается для того, чтобы тесты могли просто запускать код, не беспокоясь о том, чтобы получить jndi и службы ведения журнала на месте, прежде чем сможете запустить тестовый код.
Используя intellij и вызывая "запускать все тесты" из базы проекта, IDE пытается запустить базовый тестовый класс как unit test и дает мне ошибку "Нет runnable methods".
Я знаю, что могу поместить пустой базовый метод в базовый класс, но я надеялся, что у кого-то есть лучшая идея.
Базовый класс:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath:spring-jndi.xml"
})
@TestExecutionListeners({
Log4JSetupListener.class,
JndiSetupListener.class,
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
TransactionalTestExecutionListener.class
})
public class SpringAppTestCase extends Assert implements ApplicationContextAware {
protected JndiTemplate jndiTemplate = new JndiTemplate();
@Autowired
protected JdbcTemplate jdbcTemplate;
protected ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext ac) {
this.applicationContext = ac;
}
//
// @Test
// public void doit(){
// // this would prevent blow up but
// all subclass tests would run an extra method
// }
protected Logger log = Logger.getLogger(getClass().getName());
}
Ошибка:
java.lang.Exception: No runnable methods
at org.junit.internal.runners.MethodValidator.validateInstanceMethods(MethodValidator.java:32)
at org.junit.internal.runners.MethodValidator.validateMethodsForDefaultRunner(MethodValidator.java:43)
at org.junit.internal.runners.JUnit4ClassRunner.validate(JUnit4ClassRunner.java:36)
at org.junit.internal.runners.JUnit4ClassRunner.<init>(JUnit4ClassRunner.java:27)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:76)
Сделайте родительский класс abstract
или переименуйте его, например, он не заканчивается на Test
или TestCase
.
У меня была такая же проблема. Я тестировал без тестового метода.
@Test
public void setupTest() {
}
Выше метод решил проблему.