mercredi 15 juin 2016

Failed to load ApplicationContext, Junit with Spring MVC and Java config

I'm trying to test the service of my spring mvc app using JUNIt. I 'm using maven and hibernate. I get Failed to load ApplicationContext, i don't know if there is a specific place to put my test class, i'm using only java config. here is my test class

import com.ardia.projet.config.AppConfig;
import com.ardia.projet.entities.User;
import com.ardia.projet.services.UserService;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=AppConfig.class)
@ComponentScan(basePackages={"com.ardia.projet"})

public class UserServiceTest 
{
    @Autowired
private UserService userService;

@Test
public void findAllUsers()  {
    List<User> users = userService.findAll();
    assertNotNull(users);
    assertTrue(!users.isEmpty());
}

@Test
public void findUserById()  {
    User user = userService.findUserById(16);
//  System.out.println("nom="+user.getNom());
    assertNotNull(user);
}

@Test
public void createUser() {
    User user=new User();
    user.setCin(476);
    user.setLogin("loginUser");
    user.setNom("testUser");
    User savedUser = userService.create(user);
    User newUser = userService.findUserById(savedUser.getIdUser());
    assertEquals("testUser", newUser.getNom());

}


}

and here is my AppConfig class

 @Configuration
@ComponentScan(basePackages={"com.ardia.projet"},
    excludeFilters=@ComponentScan.Filter(type=FilterType.REGEX, pattern={"com.ardia.projet.web.*"}))
@PropertySource(value = { "classpath:application.properties" })
@EnableScheduling
@EnableAspectJAutoProxy
@EnableCaching
public class AppConfig {

@Autowired
private Environment env;

@Bean
public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer()
{
    return new PropertySourcesPlaceholderConfigurer();
}

@Bean
public CacheManager cacheManager()
{
    return new ConcurrentMapCacheManager();
}


}

and this is my PersistenceConfig class

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages="com.ardia.projet.repositories")
public class PersistenceConfig {
@Bean(name = "transactionManager")
public PlatformTransactionManager annotationDrivenTransactionManager() {
    System.out.println("PlatformTransactionManager");
    return new JpaTransactionManager();
}

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory()
{   System.out.println("LocalContainerEntityManagerFactoryBean");

    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();

    vendorAdapter.setGenerateDdl(Boolean.TRUE);
    vendorAdapter.setShowSql(Boolean.TRUE);

    factory.setDataSource(dataSource());
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setPackagesToScan("com.ardia.projet.entities");

    Properties jpaProperties = new Properties();
    //jpaProperties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
    factory.setJpaProperties(jpaProperties);

    factory.afterPropertiesSet();
    factory.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver());
    return factory;
}

@Bean
public HibernateExceptionTranslator hibernateExceptionTranslator()
{
    return new HibernateExceptionTranslator();
}

@Bean
public DataSource dataSource()
{
    final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
    dsLookup.setResourceRef(true);
    System.out.println("dataSource()");
    DataSource dataSource = dsLookup.getDataSource("jdbc/test1");

    return dataSource;
}
}

thank u for ur help

Aucun commentaire:

Enregistrer un commentaire