【问题标题】:To write Junit Test cases for spring based REST API为基于 Spring 的 REST API 编写 Junit 测试用例
【发布时间】:2016-01-06 13:46:00
【问题描述】:

对于基于 Spring 的 Rest API,为了编写 JUnit 测试用例,我需要已建立的数据库连接还是可以有一个模拟数据库。我能得到一些建议吗?

技术栈使用 si: 弹簧MVC, 休眠

【问题讨论】:

    标签: java spring hibernate rest junit


    【解决方案1】:

    这取决于您要测试的内容。如果您正在测试服务层,则不应建立与数据库的实际连接。相反,您可以模拟存储库对象,例如使用 Mockito。 Here 是一个如何连接模拟 Repository 对象的示例。

    如果你想测试你的数据访问逻辑,你可以考虑使用像 hsqldb 这样的内存数据库,并在测试配置中将其定义为测试数据源。

    对于更复杂的集成测试,您可能需要连接到实际数据库

    【讨论】:

      【解决方案2】:

      在您的root-context.xml 下,您可以考虑设置不同的 bean 配置文件。例如:

      <beans profile="dev">
          <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
              <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
              <property name="url" value="jdbc:mysql://192.168.1.2:3306/mydb"/>
              <property name="username" value="admin"/>
              <property name="password" value="password"/>
              <property name="initialSize" value="3"/>
          </bean>
          ...
      </beans>
      ...
      <beans profile="prod">
          <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
              <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
              <property name="url" value="jdbc:mysql://192.168.1.3:3306/mydb"/>
              <property name="username" value="admin"/>
              <property name="password" value="password"/>
              <property name="initialSize" value="3"/>
          </bean>
          ...
      </beans>
      

      然后在您的 JUnit 测试下,您可以考虑在测试上方使用 @Profile 注释:

      @Profile(value="dev")
      

      或者,您可以在application.properties 文件中设置spring.profiles.active 环境属性,或者通过-Dspring.profiles.active=dev 将其作为应用服务器的启动配置

      更多信息,您可以阅读Spring docs on Profiles

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-26
        • 1970-01-01
        相关资源
        最近更新 更多