导入jar包
导入spring-test的jar包,就可以像开发环境使用autowried一样使用了,spring test要求junit版本在4.12以上
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.15.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
SqlsessionTeamplate
配置一个SqlSessionTeamplate bean对象,使其支持批量操作
<!--SqlSessionTemplate bean 可以执行批量操作-->
<bean class="org.mybatis.spring.SqlSessionTemplate" id="sqlSession">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
<constructor-arg name="executorType" value="BATCH"/>
</bean>
注意,当executorType的属性设置为”BATCH”时,表示可以批量更新,但是update的返回值永远是-2147482646
开启日志功能
指定 MyBatis 所用日志的具体实现,未指定时将自动查找。
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
导入log4j的jar包
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
在resource资源目录下,建立log4j的配置文件,详细说明:https://www.iteye.com/blog/shift8-1316802
#省略根,只设置特定包的级别和目的地
#log4j.rootLogger = [ level ] , appenderName, appenderName, …
log4j.rootLogger=DEBUG,appender1
#输出到控制台
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#设置输出样式
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
#自定义样式
#%m 输出代码中指定的消息
#%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
#%r 输出自应用启动到输出该log信息耗费的毫秒数
#%c 输出所属的类目,通常就是所在类的全名
#%t 输出产生该日志事件的线程名
#%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
#%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
log4j.appender.appender1.layout.ConversionPattern=%d %p [%c] - %m%n
#输出到文件(这里默认为追加方式)
log4j.appender.appender2=org.apache.log4j.FileAppender
#设置文件输出路径
#【1】文本文件
log4j.appender.appender2.File=c:/Log4JDemo07_Dao.log
#设置文件输出样式
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss:SSS}][%C-%M] -%m%n
测试类
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class DatabaseTest {
@Autowired
DepartmentMapper departmentMapper;
@Test
public void testCRUD(){
int jerry = departmentMapper.insertSelective(new Department(null, "jerry"));
System.out.println(jerry);
}
}
spring test模拟MVC请求
@ContextConfiguration(locations = {"classpath:applicationContext.xml","classpath:spring-mvc.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class MvcTest {
/**
* 将IOC容器注入进来,需要添加@WebAppConfiguration
*/
@Autowired
WebApplicationContext webApplicationContext;
// 模拟发送MVC请求
MockMvc mockMvc;
@Before
public void initMockMvc(){
mockMvc= MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@Test
public void testEmpl() throws Exception {
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/empls")
.param("pn", "1"))
.andReturn();
MockHttpServletRequest request = result.getRequest();
PageInfo pageInfo = (PageInfo) request.getAttribute("pageInfo");
System.out.println("总页数"+pageInfo.getPages());
int[] nums = pageInfo.getNavigatepageNums();
for (int i=0;i<nums.length;i++){
System.out.print(" "+i);
}
List<Employ> list = pageInfo.getList();
for (Employ employ : list){
System.out.println(employ.getEmpId()+"===>name: "+employ.getEmpName());
}
}
}