导入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.PatternLayoutlog4j.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());
}
}
}
