SpringBoot 多模块 Dao 层测试

21 篇文章 0 订阅
9 篇文章 0 订阅

     源码下载地址: 链接: https://pan.baidu.com/s/1v5FmbEvWtQXmv1DGnIOPvw 提取码: cxtn

     CSDN下载: https://download.csdn.net/download/zcf980/10719897

     在网上找了很久都没找到关于SpringBoot多模块的有效单元测试方法, 后来自己摸索了很久才解决, 写两篇博客来帮助大家

     此篇为 Dao 层的测试代码  Service测试请参考: https://blog.csdn.net/zcf980/article/details/83118300

     本项目 分一个父工程 demo 和 三个子模块(demo-dao, demo-service, demo-web),  一个数据库 test , test里只有一张demo      表: 生成demo表的代码:     


 
 
  1. CREATE TABLE `demo` (
  2. `id` int( 11) NOT NULL AUTO_INCREMENT,
  3. `cname` varchar( 255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  4. PRIMARY KEY ( `id`) USING BTREE
  5. ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

     贴上demo-dao层的目录结构, 很简单:

             1. Demo.java, DemoRepository.java;

             2. DemoTest.java,  Dao层测试启动类DemoDaoApplicationTests.java,

             3.  pom.xml, application.yml

!!!!!!注意: 配置文件 application.yml 必须放在 demo-dao 的 Resource 目录下, 放在demo-service或demo-web目录下的话, 测试 Dao 层的时候配置文件不会扫描到, 因此会报错

 默认的测试启动类是这样的: 


 
 
  1. package demo .demodao;
  2. import org .junit .Test;
  3. import org .junit .runner .RunWith;
  4. import org .springframework .boot .test .context .SpringBootTest;
  5. import org .springframework .test .context .junit4 .SpringRunner;
  6. @ RunWith( SpringRunner. class)
  7. @SpringBootTest
  8. public class DemoDaoApplicationTests {
  9. @ Test
  10. public void contextLoads() {
  11. }
  12. }

   使用这个默认测试启动类的话, 汇报找不到 Bean 的错, 网上说了很多修改 启动类的扫描路径的方法, 经过测试都不行

   解决方案:

                  修改这个类,是他变成一个普通的启动类, 这样根据 SpringBoot 扫描包的规则: 自启动类所在包自上而下扫描,

                  便可扫描到 DemoRepository 这个 Bean

  修改后的 DemoDaoApplicationTests.java: 


 
 
  1. package demo.demodao;
  2. import org.junit.Test;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @SpringBootApplication
  5. public class DemoDaoApplicationTests {
  6. @Test
  7. public void contextLoads() {
  8. }
  9. }

  Demorepository.java在 demo .demodao 包下

  DemoDaoApplicationTests.java 也在 demo.demodao 包下

  运行测试代码, 测试成功!!!!!!!!!

  下面贴上其他几个文件的代码: 

   DemoTest.java   


 
 
  1. package demo.demodao;
  2. import org.junit.Test;
  3. import org.junit.runner.RunWith;
  4. import org.springframework.beans.factory. annotation.Autowired;
  5. import org.springframework.boot.test.context.SpringBootTest;
  6. import org.springframework.test.context.junit4.SpringRunner;
  7. @RunWith(SpringRunner.class)
  8. @SpringBootTest
  9. public class DemoTest {
  10. @Autowired
  11. private DemoRepository demoRepository;
  12. @Test
  13. public void testAdd(){
  14. Demo demo = new Demo();
  15. demo.setId( 1);
  16. demo.setName( "TestName");
  17. Demo result = this.demoRepository.save(demo);
  18. System. out.println(result == null? "插入成功" : "插入失败");
  19. }
  20. }

  Demo.java 


 
 
  1. package demo.demodao;
  2. import javax.persistence.*;
  3. @Entity(name = "demo") //设置实体名, 在数据库中是表名
  4. public class Demo {
  5. @Id
  6. @GeneratedValue(strategy = GenerationType.AUTO) //设置自动增长
  7. @Column(name = "id")
  8. private Integer id;
  9. @Column(name = "cname") //设置数据库字段名
  10. private String name;
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public Integer getId() {
  18. return id;
  19. }
  20. public void setId(Integer id) {
  21. this.id = id;
  22. }
  23. }

 DemoRepository.java


 
 
  1. package demo.demodao;
  2. import org.springframework.data.jpa.repository.JpaRepository;
  3. public interface DemoRepository extends JpaRepository<Demo, Integer> {
  4. }

  application.xml   


 
 
  1. spring:
  2. datasource:
  3. # jdbc:mysql://localhost:3306/test 数据库地址
  4. url: jdbc: mysql:/ /localhost:3306/test?useUnicode= true&characterEncoding=UTF- 8&useSSL= false
  5. username: root # 数据库用户名 修改为自己数据库用户名和密码
  6. password: xxxx # 数据库密码
  7. driver- class-name: com.mysql.jdbc.Driver # 数据库驱动
  8. jpa:
  9. hibernate:
  10. ddl- auto: none # create-drop 如果实体对应的表已存在,先删除再创建,否则直接创建
  11. # !!!注意: 第一次运行时可设置为 create-drop, 这样就不需要手动创建数据库表, 但是后面运行务必设置为none

  pom.xml  


 
 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0 </modelVersion>
  5. <groupId>demo </groupId>
  6. <artifactId>demo-dao </artifactId>
  7. <version>0.0.1-SNAPSHOT </version>
  8. <packaging>jar </packaging>
  9. <name>demo-dao </name>
  10. <description>Demo project for Spring Boot </description>
  11. <parent>
  12. <groupId>demo </groupId>
  13. <artifactId>demo </artifactId>
  14. <version>0.0.1-SNAPSHOT </version>
  15. <relativePath/> <!-- lookup parent from repository -->
  16. </parent>
  17. <dependencies>
  18. <!-- 添加 demo-base 的依赖 -->
  19. <dependency>
  20. <groupId>org.springframework.boot </groupId>
  21. <artifactId>spring-boot-starter-data-jpa </artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>mysql </groupId>
  25. <artifactId>mysql-connector-java </artifactId>
  26. <scope>runtime </scope>
  27. </dependency>
  28. </dependencies>
  29. </project>

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值