Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我无法使用TestNG启动器(多线程)将Springbean注入测试_Java_Spring_Hibernate_Heroku_Testng - Fatal编程技术网

Java 我无法使用TestNG启动器(多线程)将Springbean注入测试

Java 我无法使用TestNG启动器(多线程)将Springbean注入测试,java,spring,hibernate,heroku,testng,Java,Spring,Hibernate,Heroku,Testng,我运行测试时使用: @TransactionConfiguration @Transactional @ContextConfiguration(classes=AnnotationConfigContextLoaderUtils.class) @WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) public class AnyTest extends TestMachine { @Inject privat

我运行测试时使用:

@TransactionConfiguration
@Transactional
@ContextConfiguration(classes=AnnotationConfigContextLoaderUtils.class)
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class AnyTest extends TestMachine {

    @Inject
    private AccountDao accDao; //ALLWAYS NULL
public class SpringMVCInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {AppConfig.class, SpringMVCConfiguration.class, SimpleCORSFilter.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}
<spring-version>4.0.3.RELEASE</spring-version>
<spring-test>4.0.3.RELEASE</spring-test>
<testNG-Version>6.9.4</testNG-Version>

<hibernate.version>4.1.5.Final</hibernate.version>
<hibernate-validator>4.2.0.Final</hibernate-validator>
<mysql.connector.version>5.1.32</mysql.connector.version>
<dbcp.version>1.4</dbcp.version>
AppConfig.java

TestNG testNG = new TestNG();
@Bean
public SessionScope sessionScope(){
    return new SessionScope();
}

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

@Bean
public JdbcTemplate jdbcTemplate() throws ConfigurationException {
    return new JdbcTemplate(dataSource());
}

@Bean
public DataSource dataSource() throws ConfigurationException {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    //DB INITIALIZE
}

@Bean(name = "sessionFactory")
    public LocalSessionFactoryBean sessionFactory() throws ConfigurationException {
        LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource());
        sessionFactoryBean.setPackagesToScan("package.model");
        sessionFactoryBean.setHibernateProperties(hibProperties());
        return sessionFactoryBean;
    }

    @Bean
    public HibernateTransactionManager transactionManager() throws ConfigurationException {
        HibernateTransactionManager transactionManager = new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory().getObject());
        return transactionManager;
    }

    private Properties hibProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.hbm2ddl.auto", hibernateAuto);
        properties.put("hibernate.dialect", hibernateDialect);
        properties.put("hibernate.show_sql", showSQL);
        return properties;
    }
springmvcinInitializer.java

TestNG testNG = new TestNG();
@Bean
public SessionScope sessionScope(){
    return new SessionScope();
}

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

@Bean
public JdbcTemplate jdbcTemplate() throws ConfigurationException {
    return new JdbcTemplate(dataSource());
}

@Bean
public DataSource dataSource() throws ConfigurationException {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    //DB INITIALIZE
}

@Bean(name = "sessionFactory")
    public LocalSessionFactoryBean sessionFactory() throws ConfigurationException {
        LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource());
        sessionFactoryBean.setPackagesToScan("package.model");
        sessionFactoryBean.setHibernateProperties(hibProperties());
        return sessionFactoryBean;
    }

    @Bean
    public HibernateTransactionManager transactionManager() throws ConfigurationException {
        HibernateTransactionManager transactionManager = new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory().getObject());
        return transactionManager;
    }

    private Properties hibProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.hbm2ddl.auto", hibernateAuto);
        properties.put("hibernate.dialect", hibernateDialect);
        properties.put("hibernate.show_sql", showSQL);
        return properties;
    }
公共类SpringMVCiInitializer扩展了AbstractAnnotationConfigDispatcherServletInitializer{
@凌驾
受保护类[]getRootConfigClasses(){
返回新类[]{AppConfig.Class,SpringMVCConfiguration.Class,SimpleCORSFilter.Class};
}
@凌驾
受保护类[]getServletConfigClasses(){
返回null;
}
@凌驾
受保护的字符串[]getServletMappings(){
返回新字符串[]{”/“};
}
}
Maven依赖项版本:

@TransactionConfiguration
@Transactional
@ContextConfiguration(classes=AnnotationConfigContextLoaderUtils.class)
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class AnyTest extends TestMachine {

    @Inject
    private AccountDao accDao; //ALLWAYS NULL
public class SpringMVCInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {AppConfig.class, SpringMVCConfiguration.class, SimpleCORSFilter.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}
<spring-version>4.0.3.RELEASE</spring-version>
<spring-test>4.0.3.RELEASE</spring-test>
<testNG-Version>6.9.4</testNG-Version>

<hibernate.version>4.1.5.Final</hibernate.version>
<hibernate-validator>4.2.0.Final</hibernate-validator>
<mysql.connector.version>5.1.32</mysql.connector.version>
<dbcp.version>1.4</dbcp.version>
4.0.3.0版本
4.0.3.1发布
6.9.4
4.1.5.最终版本
4.2.0.4最终版本
5.1.32
1.4
为什么我不能向测试注入任何bean

注意:我使用了@Autowired,但它也不起作用

一个建议是在我用来运行测试的主方法中注入会话。
有没有办法做到这一点?

我解决了这个问题,创建了一个静态类,并将依赖项注入控制器中的这个类中

控制器:

@TransactionConfiguration
@Transactional
@ContextConfiguration(classes=AnnotationConfigContextLoaderUtils.class)
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class AnyTest extends TestMachine {

    @Inject
    private AccountDao accDao; //ALLWAYS NULL
public class SpringMVCInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {AppConfig.class, SpringMVCConfiguration.class, SimpleCORSFilter.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}
<spring-version>4.0.3.RELEASE</spring-version>
<spring-test>4.0.3.RELEASE</spring-test>
<testNG-Version>6.9.4</testNG-Version>

<hibernate.version>4.1.5.Final</hibernate.version>
<hibernate-validator>4.2.0.Final</hibernate-validator>
<mysql.connector.version>5.1.32</mysql.connector.version>
<dbcp.version>1.4</dbcp.version>
HibernateUtil.java

TestNG testNG = new TestNG();
@Bean
public SessionScope sessionScope(){
    return new SessionScope();
}

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

@Bean
public JdbcTemplate jdbcTemplate() throws ConfigurationException {
    return new JdbcTemplate(dataSource());
}

@Bean
public DataSource dataSource() throws ConfigurationException {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    //DB INITIALIZE
}

@Bean(name = "sessionFactory")
    public LocalSessionFactoryBean sessionFactory() throws ConfigurationException {
        LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource());
        sessionFactoryBean.setPackagesToScan("package.model");
        sessionFactoryBean.setHibernateProperties(hibProperties());
        return sessionFactoryBean;
    }

    @Bean
    public HibernateTransactionManager transactionManager() throws ConfigurationException {
        HibernateTransactionManager transactionManager = new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory().getObject());
        return transactionManager;
    }

    private Properties hibProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.hbm2ddl.auto", hibernateAuto);
        properties.put("hibernate.dialect", hibernateDialect);
        properties.put("hibernate.show_sql", showSQL);
        return properties;
    }

你的
AccountDao
bean在哪里?它是一个事务存储库