【接口测试】-总结-关于spring框架的数据库连接配置

2022-10-05 09:09:51
前言:最近在学习基于spring框架测试mysql数据库。关于数据库的连接配置总结如下,以备后用
  1. spring maven工程,首先得配置spring-jdbc和mysql-connector-java,所谓皮之不存毛将焉附
    •  <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${springframework.version}</version>
            </dependency>
      
      
            <dependency>
                <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>


  2. 然后基于已经导入的jar包,才能在spring xml配置文件里配置数据库DataSource 的bean,这是通用思路,之前没有注意这个顺序,上来就配置bean,由于没有导入jar包,自然会报错,容器无法初始化bean。另外注意需启用上下文<context:property-placeholder >以识别外部属性文件,我们的数据库连接配置就放在外部属性文件中。
    • 	<context:property-placeholder location="classpath:*.properties" ignore-unresolvable="true"/>
      	<import resource="jsf-promotion-consumer.xml"/>
      	
      	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      		<property name="driverClassName" value="${jdbc.driverClassName}"/>
      		<property name="url" value="${jdbc.url}"/>
      		<property name="username" value="${jdbc.username}"/>
      		<property name="password" value="${jdbc.password}"/>
      	</bean>
    • 外部属性文件db.properties
      jdbc.driverClassName=com.mysql.jdbc.Driver
      jdbc.url=jdbc:mysql://127.0.0.1:3306/yourDbname
      jdbc.username=yourUserName
      jdbc.password=yourPassword
  3. 测试数据库是否已连接
    • 通过引入spring 的jdbcTemplate操作数据库,配置如下
      	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
      		<property name="dataSource" ref="dataSource"/>
      	</bean>
    • 通过集成测试框架spock,引入groovy语言包
            <dependency>
                  <groupId>org.codehaus.groovy</groupId>
                  <artifactId>groovy-all</artifactId>
                  <version>2.4.4</version>
                  <scope>test</scope>
              </dependency>
      
              <!-- https://mvnrepository.com/artifact/org.spockframework/spock-core -->
              <dependency>
                  <groupId>org.spockframework</groupId>
                  <artifactId>spock-core</artifactId>
                  <version>1.1-groovy-2.4</version>
                  <scope>test</scope>
              </dependency>
      
              <!-- https://mvnrepository.com/artifact/org.spockframework/spock-spring 方便集成spring test-->
              <dependency>
                  <groupId>org.spockframework</groupId>
                  <artifactId>spock-spring</artifactId>
                  <version>1.1-groovy-2.4</version>
                  <scope>test</scope>
              </dependency>
    • 验证数据库成功连接:
      @Title("对外暴露的活动接口测试")
      @ContextConfiguration(locations = "classpath*:spring-config.xml")
      @Transactional
      class ActivityServiceSpec extends Specification {
          @Resource
          ActivityService activityService
      
          @Autowired
          JdbcTemplate jdbcTemplate
          @Autowired
          DataSource dataSource
      
          @Rollback       //测试结束,数据库回归,咋失效了?
          def "根据区块ID获取批次和SKU信息"() {
              given: "修改数据库区块和区块批次表状态有效状态1,测试完毕回滚数据库"
      
      //        way1:利用groovy sql
              def sql = new Sql(dataSource)
              sql.execute("UPDATE activity_chunk SET STATUS = 1")
              sql.execute("UPDATE activity_chunk_batch SET STATUS = 1 ")
      
      //        way2:利用spring JdbcTemplate
      //        jdbcTemplate.execute("UPDATE activity_chunk SET STATUS = 1")
      //        jdbcTemplate.execute("UPDATE activity_chunk_batch SET STATUS = 1 ")
      
              when: "获取批次和sku信息"
              def activityChunkComplete = activityService.getActivityBatch(21)
              then: "验证获取结果,选品非空"
              activityChunkComplete
              println prettyPrint(toJson(activityChunkComplete))
              activityChunkComplete.batchList.selectionList
          }
      }

  • 作者:hankle_xu
  • 原文链接:https://blog.csdn.net/Hankle_Xu/article/details/78261920
    更新时间:2022-10-05 09:09:51