2016-04-13 4 views
0

У меня проблема ... Ну, когда я начинаю свой тест, я бросаю мне следующую ошибку и не могу найти, что он делает неправильно. Agrege соответствующий "Application-контекст", где есть настройки нотация спящий режим, но я не могу выполнить мой тест успешноНе удалось загрузить ApplicationContext в моем тесте (Junit with Hibernate)

"WebAppInitializer":

package com.checkwork.conf; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.web.WebApplicationInitializer; 
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; 
import org.springframework.web.servlet.DispatcherServlet; 

import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRegistration; 

public class WebAppInitializer implements WebApplicationInitializer { 
    private static final Logger logger = LoggerFactory.getLogger(WebAppInitializer.class); 

    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException { 
     logger.info("Initializing web application with context configuration class {}", WebAppConfigurer.class.getCanonicalName()); 

     //WebApplication Param-Value (Web.XML) 
     AnnotationConfigWebApplicationContext webAppContext = new AnnotationConfigWebApplicationContext(); 
     webAppContext.register(WebAppConfigurer.class); 

     //Crea Servlet y mapea las peticiones con "/" sin extensiones. 
     ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", 
       new DispatcherServlet(webAppContext)); 
     dispatcher.setLoadOnStartup(1); 
     dispatcher.addMapping("/"); 

    } 
} 

"WebAppConfigurer":

package com.checkwork.conf; 

import com.checkwork.model.Empleado; 

import java.util.Properties; 

import javax.sql.DataSource; 

import org.apache.commons.dbcp.BasicDataSource; 
import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.*; 
import org.springframework.orm.hibernate4.HibernateTransactionManager; 
import org.springframework.orm.hibernate4.LocalSessionFactoryBuilder; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 

@Configuration 
@EnableTransactionManagement /** Gestor de transacciones que permiten habilitar los componentes para la conexion a la BD */ 
@EnableWebMvc 
@ComponentScan(basePackages = {"com.checkwork"}) 
public class WebAppConfigurer extends WebMvcConfigurerAdapter { 

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

    @Bean(name = "dataSource") 
    public DataSource getDataSource() { 
     BasicDataSource dataSource = new BasicDataSource(); 
     dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 
     dataSource.setUrl("jdbc:mysql://localhost:3306/module"); 
     dataSource.setUsername("root"); 
     dataSource.setPassword("root");  
     return dataSource; 
    } 

    private Properties getHibernateProperties() { 
     Properties properties = new Properties(); 
     properties.put("hibernate.show_sql", "true"); 
     properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); 
     return properties; 
    } 

    @Autowired 
    @Bean(name = "sessionFactory") 
    public SessionFactory getSessionFactory(DataSource dataSource) { 
     LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource); 
     sessionBuilder.addProperties(getHibernateProperties()); 
     sessionBuilder.addAnnotatedClasses(Empleado.class); 
     return sessionBuilder.buildSessionFactory(); 
    } 

    @Autowired 
    @Bean(name = "transactionManager") 
    public HibernateTransactionManager getTransactionManager(
      SessionFactory sessionFactory) { 
     HibernateTransactionManager transactionManager = new HibernateTransactionManager(
       sessionFactory); 
     return transactionManager; 
    } 

    /** 
    * Agrega al Caché la librería OpenUI5 en tiempo de ejecución {WEB-INF/lib} 
    */ 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations("classpath:/resources/", "/resources/**") 
       .setCachePeriod(31556926); 
    } 


} 

Тест:

Консоль
package com.checkwork.service; 

import static org.junit.Assert.*; 

import javax.transaction.Transactional; 

import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
import com.checkwork.conf.WebAppConfigurer; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = WebAppConfigurer.class) 
public class EmpleadoServiceTest { 

    private EmpleadoService empleadoService; 

    @Before 
    public void setUp() throws Exception{ 
     empleadoService = new EmpleadoService(); 
    } 

    @Test 
    @Transactional 
    public void getAllTest(){ 
     assertNotNull(empleadoService.getAll()); 
    } 
} 

Ошибка - Junit:

SEVERE: Caught exception while allowing TestExecutionListener [org.springframewor[email protected]1761de10] to prepare test instance [[email protected]] 
java.lang.IllegalStateException: Failed to load ApplicationContext... 

ответ

0

Изменить @ContextConfiguration(classes = WebAppConfigurer.class)

в @ContextConfiguration(classes = WebAppConfigurer.class, initializers=WebAppInitializer.class)

обновление

Также включают @WebIntegrationTest ниже @ContextConfiguration

+0

Поместив инициализаторы = WebAppInitializer.class дает мне ошибку, но не указывает, что ошибка:/ –

+0

Попробуйте добавить обновленную. – ndrone

Смежные вопросы