Нет Runnable методов Ошибка из базового тестового класса - PullRequest
29 голосов
/ 10 июня 2009

У меня есть несколько базовых тестовых классов, которые настраивают общие конфигурации для Spring, logging, jndi и т. Д. С использованием прослушивателей выполнения теста, которые затем наследуются подклассами. Это сделано для того, чтобы тесты могли просто запускать код, не беспокоясь о том, чтобы на месте запустить jndi и службы регистрации, прежде чем можно будет запускать тестовый код.

Используя intellij и вызывая «запустить все тесты» из базы проекта, IDE пытается запустить базовый класс тестирования как модульный тест и выдает ошибку «Нет запускаемых методов».

Я знаю, что мог бы поместить пустой исполняемый метод в базовый класс, но я надеялся, что у кого-то есть идея получше.

Базовый класс:

    @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)

Ответы [ 2 ]

63 голосов
/ 11 июня 2009

Сделать родительский класс abstract или переименовать его так, чтобы он не заканчивался на Test или TestCase.

3 голосов
/ 27 сентября 2016

У меня была такая же проблема. Я тестировал без метода испытаний.

@Test
public void setupTest() {
}

Вышеупомянутым методом решена проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...