Java 使用testNG、spring和hsqldb进行测试

Java 使用testNG、spring和hsqldb进行测试,java,spring,maven,testng,Java,Spring,Maven,Testng,我正在尝试使用Emmbed内存数据库hsqldb版本2.2.8测试一个应用程序 这是我的测试课,我有一个错误,我不知道如何解决它 @Transactional @TransactionConfiguration(defaultRollback=true) @ContextConfiguration(locations="classpath*:applicationContext-deutes-punts-logica-Test.xml") @Test(groups = { "logica", "

我正在尝试使用Emmbed内存数据库hsqldb版本2.2.8测试一个应用程序

这是我的测试课,我有一个错误,我不知道如何解决它

@Transactional
@TransactionConfiguration(defaultRollback=true)
@ContextConfiguration(locations="classpath*:applicationContext-deutes-punts-logica-Test.xml")
@Test(groups = { "logica", "models" })
public class ServeiDeutesTest extends AbstractTransactionalTestNGSpringContextTests {


private DbTestPreparator preparadorDb;
private IVwGptVBasicDao vwGptVBasicDAO;


/**
 * Preparació de la base de dades abans d'iniciar les provatures
 */
@BeforeMethod public void prepararProvatures() throws Exception
{
     List<Map<String,Object>> patrons;

     //Preparem la base de dades
    //eliminem i omplim
  ** preparadorDb.preparar();***
}
/*
 * Funció per recuperar deutes bàsic.
 *  
 * */
 @Test
 public void comprovarBaseDeDadesOmplerta(){

     Assert.assertNull(vwGptVBasicDAO.obtenirDeutes(null, null, null));
     Assert.assertFalse(false);
 }
@Transactional
@TransactionConfiguration(defaultRollback=true)
@ContextConfiguration(locations=“classpath*:applicationContext deutes punts logica Test.xml”)
@测试(组={“logica”,“models”})
公共类ServeItemTest扩展了AbstractTransactionalTestNGSpringContextTests{
私有DbTestPreparator preparadorDb;
私人IVwGptVBasicDao vwGptVBasicDAO;
/**
*准备好课程的基本要求
*/
@BeforeMethod public void prepararProvatures()引发异常
{
列出顾客名单;
//戴德斯基地酒店
//伊莱米尼姆·奥姆普林
**preparadorDb.preparar()***
}
/*
*重复使用氘的功能。
*  
* */
@试验
公共无效comprovarBaseDeDadesOmplerta(){
Assert.assertNull(vwGptVBasicDAO.obtenirDeutes(null,null,null));
Assert.assertFalse(false);
}
我不明白为什么我的对象preparadorDb为NULL;(我已经正确地获得/设置为Ioc,我也尝试使用autowired…)

这是应用程序上下文:

<bean id="connexioJdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg type="javax.sql.DataSource" ref="dataSource"/>
    </bean>
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

     <!-- creació en memoria de la bbdd  
     <jdbc:embedded-database id="dataSource">
        <jdbc:script location="classpath:schema.sql" />
        <jdbc:script location="classpath:test-data.sql"” />
     </jdbc:embedded-database>
     -->
     <bean id="serveiDeutesTest" class="cat.base.gpt.logica.test.ServeiDeutesTest">
        <property name="vwGptVBasicDAO" ref="vwGptVBasicDAO" />
        <property name="preparadorDb" ref="preparadorDb" />
    </bean>

     <bean id="gptServiceBO" class="cat.base.gpt.logica.serveis.GptService">
        <property name="vwGptVBasicDAO" ref="vwGptVBasicDAO" />
        <qualifier type="cat.base.gpt.domini.service.IGptService" value="gptServiceBO" />
    </bean>


    <bean id="vwGptVBasicDAO" class="cat.base.gpt.logica.dao.impl.VwGptVBasicDao">
        <property name="jdbcTemplate" ref="connexioJdbctemplate" />
    </bean>

  <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!--  <property name="driverClassName" value="${cat.base.gpt.driverClassName}" />-->
         <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
        <!--  <property name="url" value="${cat.base.gpt.url}" />-->
        <property name="url" value="jdbc:hsqldb:mem:provatures" />
        <property name="username" value="SA" />
        <property name="password" value="SA" />
 </bean>

<bean id="preparadorDb" class="cat.base.baseframe.utils.test.DbTestPreparator">
    <property name="arxiusSqlCreacio">
        <list>
            <bean class="org.springframework.core.io.ClassPathResource">
                <constructor-arg type="java.lang.String" value="src/test/resources/database.sql" />
            </bean>
        </list>
    </property>
    <property name="arxiusSqlCarrega">
        <list>
            <bean class="org.springframework.core.io.ClassPathResource">
                <constructor-arg type="java.lang.String" value="src/test/resources/dades.sql" />
            </bean>
        </list>
    </property>
    <property name="jdbcOperations" ref="connexioJdbctemplate" />
    <!--  <property name="executarCreacio" value="${cat.base.bfp.crearTaules}" />-->
    <property name="executarCreacio" value="true" />
</bean>



    <bean id="postprocess" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
        <property name="locations">
            <list>
                <value>classpath*:deutes-punts-logica.properties</value>
                <value>classpath*:deutes-punts-test.properties</value>
                <value>classpath*:entorn-servidor.properties</value>
            </list>
        </property>
        <property name="ignoreResourceNotFound" value="true"/>
    </bean>

类路径*:deutes-punts-logica.properties
类路径*:deutes-punts-test.properties
类路径*:entorn-servidor.properties

ty.

uff好吧,对我来说,这没有意义,只能选择解决方案。。 最后,我必须指定Autowired注解@Autowired和getter与setter!! 也许这是一只虫子?我被这种情况浪费了

@Transactional
@TransactionConfiguration(defaultRollback=true)
@ContextConfiguration(locations="classpath*:applicationContext-deutes-punts-logica-Test.xml")
//@Test(groups = { "logica" })
public class ServeiDeutesTest extends AbstractTransactionalTestNGSpringContextTests {

    private Collection collection;
    @Autowired
    private IVwGptVBasicDao vwGptVBasicDAO;
    @Autowired
    private DbTestPreparator preparadorDb;

public IVwGptVBasicDao getVwGptVBasicDAO() {
        return vwGptVBasicDAO;
    }

    public void setVwGptVBasicDAO(IVwGptVBasicDao vwGptVBasicDAO) {
        this.vwGptVBasicDAO = vwGptVBasicDAO;
    }

    public DbTestPreparator getPreparadorDb() {
        return preparadorDb;
    }

    public void setPreparadorDb(DbTestPreparator preparadorDb) {
        this.preparadorDb = preparadorDb;
    }
这是appCOntext

 <bean id="serveiDeutesTest" class="cat.base.gpt.logica.ServeiDeutesTest">
         <property name="preparadorDb" ref="preparadorDb" />
         <property name="vwGptVBasicDAO" ref="vwGptVBasicDAO" />

    </bean>

     <bean id="gptServiceBO" class="cat.base.gpt.logica.serveis.GptService">
        <property name="vwGptVBasicDAO" ref="vwGptVBasicDAO" />
        <qualifier type="cat.base.gpt.domini.service.IGptService" value="gptServiceBO" />
    </bean>


    <bean id="vwGptVBasicDAO" class="cat.base.gpt.logica.dao.impl.VwGptVBasicDao">
        <property name="jdbcTemplate" ref="connexioJdbctemplate" />     
    </bean>

  <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">

        <property name="driverClassName" value="${cat.base.gpt.driverClassName}" />
        <!--   <property name="driverClassName" value="org.hsqldb.jdbcDriver" />-->
        <property name="url" value="${cat.base.gpt.url}" />
        <!--  <property name="url" value="jdbc:hsqldb:mem:provatures" />-->
        <property name="username" value="SA" />
        <property name="password" value="SA" />
 </bean>

    <!-- baseframe.utils.test.  gpt.logica--> 
<bean id="preparadorDb" class="cat.base.baseframe.utils.test.DbTestPreparator">
    <property name="arxiusSqlCreacio">
        <list>
            <bean class="org.springframework.core.io.ClassPathResource">
                <constructor-arg type="java.lang.String" value="database.sql" />
            </bean>
        </list>
    </property>
    <property name="arxiusSqlCarrega">
        <list>
            <bean class="org.springframework.core.io.ClassPathResource">
                <constructor-arg type="java.lang.String" value="dades.sql" />
            </bean>
        </list>
    </property>
    <property name="jdbcOperations" ref="connexioJdbctemplate" />
    <!--  <property name="executarCreacio" value="${cat.base.bfp.crearTaules}" />-->
    <property name="executarCreacio" value="${cat.base.gpt.crearTaules}" />
</bean>


我的tstng版本是=6.7

检查您的
@组件
@存储库
@Service
注释。可能您忘记添加此类。因此,在类cat.base.baseframe.utils.test.DbTestPreparator中,有必要添加此类注释。