test失败????????
java.lang.IllegalStateException: Failed to load ApplicationContext
Junit单元测试
更改报错等级
更改spring 自动注入配置
(泪目)
花了两个多小时,终于把dao层开发这节的test通过了
遇到的第一个问题是空指针,发现是assertEquals方法选错了,要选参数为long,long的
第二个问题是Failed to load ApplicationContext,
后来发现是test注解导包导错了
spring-test需要的Junit是org.junit.Test
第三个问题是No suitable driver
是因为我的mysql是8.0.1.6。
然后我的依赖最开始用的是最新的,然后最新的发现mysql连不上
于是把老师的源码的对照的拷了一遍,依赖用的是老师的,然后发现问题还是没解决。然后在看问答和笔记的过程了解到spring依赖和mysql连接依赖有对应关系,于是我把依赖换成了最新的,mysql版本的依赖中加上我的mysql版本<version>8.0.1.6</version>导入后。
在application.xml改成这样
#数据库驱动 jdbc.driver=com.mysql.cj.jdbc.Driver #数据库链接 jdbc.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
就ok了。
在bean中用Alt+enter键建测试类:
3-6dao层开发:UT测试编写
直接写2,expected是不需要自己写的。
为什么下面的那些先用ignore注释掉,因为这样才能使得前面的测试,而不使后面的报错。
一旦不能明确是哪个dao就会报错
希望spring动态的将咱们需要用到的mybatis实现类给注入进来。
之所以用到@Autowired就是他能动态的将实现类areaDao注入进来。
头部添加标签,让他成为真正的ut类UT类
@RunWith(SpringRunner.class)
@SpringBootTest
@RunWith(SpringRunner.class)
@SpringBootTest
@RunWith(SpringRunner.class)
@SpringBootTest
在测试类前面要写两个@
@RunWith(SpringRunner.class)
@SpringBootTest
在测试类前面要写上两个
@RunWith(SpirngRunner.class)
@SpringBootTest
创建单元测试类对方法进行验证
测试类,增加@RunWith(SpringRunner.class)和@SpringBootTest两个标签
useGeneratedKeys="true" keyProperty="areaId"
insert返回的就是插入数据条数0或1, 设置useGeneratedKeys="true" keyProperty="id"之后返回的id是映射回实体类中的, 需要获取id就是Object.getId()就可以,如果设置useGeneratedKeys="false",那么Object.getId()就会是0 (或者只之前自己设置的值,但这个值不会写入到数据库的id里去,数据库依然是自增)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 配置全局属性 --> <settings> <!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 --> <setting name="useGeneratedKeys" value="true"/> <!-- 使用列标签替换列别名 默认:true --> <setting name="useColumnLabel" value="true"/> <!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- Continue going here --> </configuration>
学不下去了,程序一直报错
2019-07-01发现问题是因为项目名称与教程不一致,而一些配置却跟回教程,导致报错
使用spring后面版本的同学需要在配置文件中如此设置:
jdbc.driver=com.mysql.cj.jdbc.Driver
视频中的com.mysql.jdbc.Driver已被弃用
AreaDaoTest1
数据库无法连接的常见原因:
1. 没有引入数据库连接jar包
解决办法:project struture->moudules->dependencies->+相应的jar包
2. 驱动配置有误:driver=com.mysql.jdbc.Driver
3. 数据库连接地址有误:url=jdbc:mysql://localhost:3306/database_name
4. 数据库密码或帐号有误
5. 数据库未启动或无权访问
6. mysql root没有远程访问的权限,需要增加权限,增加权限的步骤如下:
进入mysql数据库:
grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option;
flush privileges;
mybatis中mapper里已经设置了sid自增,但insert仍出现sid不能为空的错误
解决:1. sid类型需为int
2. 需在navicat中:表shouse->sid->勾选”自动自增“
修改idea设置
@RunWith(SpringRunner.class)
@SpringBootTest
用于代码的单元测试。
@RunWith(SpringRunner.class) @SpringBootTest 这两个注解是用在单元测试的类上的,了解下。