1

我刚刚开始了一个使用spring和spring mvc的小项目。我已经定义了域类和服务以及 DAO。我正在使用 spring ORM 进行休眠。现在我正在尝试使用弹簧测试(JUnit)测试 DAO 层。

为此,我用谷歌搜索并得到了一个例子。我正在使用以下代码进行测试,

ORMTest.java(JUnit 测试类)

package org.droidaceapps.tests;

import org.droidaceapps.domain.Users;
import org.droidaceapps.services.UserServiceInter;
import org.junit.Test;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;

@ContextConfiguration
public class SterlingTest extends AbstractTransactionalJUnit4SpringContextTests {
@Test
public void userDAOTest(){
  UserServiceInter userService = (UserServiceInter) 
                        super.applicationContext.getBean("userService");
   Users userSrinivas = new Users();
   userSrinivas.setName("Srinivas");
   userSrinivas.setPassword("techno890");
   String[] skills = {"java","c++"};
   userSrinivas.setSkills(skills);

   userService.createUser(userSrinivas);

    }
  }

下面是我的测试配置文件,(我已将此文件放在与 ORMTest.java 文件相同的文件夹中。

 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
       <props>
           <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
           <prop key="show_sql">true</prop>
           <prop key="hibernate.hbm2ddl.auto">update</prop>
       </props>
    </property>

    <property name="mappingResources">
       <list>
           <value>/org/droidaceapps/domain/users.hbm.xml</value>
       </list>
     </property>

</bean> 

用户.hbm.xml

  <?xml version="1.0"?>
  <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 <hibernate-mapping >

   <class name="org.droidaceapps.domain.Users" table="users" >

     <id name="id" column="id" type="java.lang.Long">
        <generator class="increment"/>
      </id>
      <property name="name" type="string"/>
      <property name="password" type="string"/>

     </class>

    </hibernate-mapping>

现在,当我运行 ORMTest.java 时,我在控制台中得到以下输出,

 Aug 14, 2012 7:18:53 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader  loadBeanDefinitions
 INFO: Loading XML bean definitions from class path resource [org/droidaceapps/tests/ORMTest-context.xml]
 Aug 14, 2012 7:18:54 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
   INFO: Refreshing    org.springframework.context.support.GenericApplicationContext@ebe9f73: startup date [Tue   Aug 14 07:18:54 BST 2012]; root of context hierarchy
    Aug 14, 2012 7:18:54 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
  INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@250606f7:

定义bean [org.springframework.context.annotation.internalConfigurationAnnotationProcessor, org.springframework.context.annotation.internalAutowiredAnnotationProcessor, org.springframework.context.annotation.internalRequiredAnnotationProcessor, org.springframework.context.annotation.internalCommonAnnotationProcessor, org.springframework.context.annotation .internalPersistenceAnnotationProcessor, org.springframework.web.servlet.view.InternalResourceViewResolver#0, dataSource,sessionFactory,hibernateTemplate,userDAO,userService]; 工厂层次结构的根

我没有看到在数据库中创建了表,也没有在 hibernate 创建的控制台中看到任何 sql 语句。

我错过了什么吗?

谢谢

4

0 回答 0