SSM框架使用Junit 测试类进行数据库增删改查的测试
1.前言
maven工程的SSM框架整合过程中,往往需要进行测试,测试Dao,Service等层是否有问题。这里就需要了Junit Test。
在这里就记录一下测试方法。
2.正文
测试类和junit一起使用的时候,如果没有设置读取xml配置文件,就会报创建Bean失败的错误,在进行Junit 测试前,往往需要先配置读取spring的核心配置文件,这样才能够启动IOC容器,进行测试。
- 搭建Spring测试环境
在spring配置里面加入mapper/Dao的自动扫描机制,从Spring中拿到mapper/dao:
<!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<!-- 扫描所有的dao接口的实现,加入到Ioc容器中,也是单元测试的条件 -->
<property name="basePackage" value="com.zout.dao" />
</bean>
图示:
2.Maven里面pom.xml导入Spring单元测试模块的依赖:
<!-- 导入Spring的测试模块 可以在测试的时候往数据库生成数据-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
</dependencies>
3..测试类添加注解指定xml配置文件的位置,能够自动创建Ioc容器:
二种方式:
1.先创建一个父类,在父类里面读取配置文件创建IOC容器,然后让子类继承即可。
2.也可以直接在一个类的头部声明也可。
在这里我采用 ‘方式一’,比较清晰明了。
- 新建测试父类:BookTest.java
在项目下的test包里面,新建的java测试文件。
package com.zout.test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
*@class_name:BookTest
*@param:配置spring和junit整合,junit启动时加载springIOC容器 spring-test,junit
*@return:
*@author:Zoutao
*@createtime:2018年2月10日
*/
@RunWith(SpringJUnit4ClassRunner.class)
// 告诉junit spring配置文件位置
@ContextConfiguration({ "classpath:spring/spring-dao.xml", "classpath:spring/spring-service.xml" })
public class BookTest {
}
要测试几个模块,就导入相应的class地址,当然如果你的spring配置在同一个文件中,那么只需要导入总的那个即可。
2. 新建测试子类BookDao:BookDaoTest.java
package com.zout.test;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.zout.dao.BookDao;
import com.zout.entity.Book;
import java.util.List;
import org.junit.Test;
import org.slf4j.Logger;
/**
* @class_name:BookDaoTest
* @param: 以junit Test运行测试
* @return: 对数据库表操作
* @author:Zoutao
* @createtime:2018年2月10日
*/
public class BookDaoTest extends BaseTest {
//声明日志管理,日志记录
@SuppressWarnings("unused")
private Logger logger = LoggerFactory.getLogger(this.getClass());
//注入BookDao
@Autowired
private BookDao bookDao;
//开始测试,给表,生成数据测试
@Test
public void addBook() {
for (int i = 0; i < 10; i++) {
Book book = new Book();
book.setDetail("这是来自一本书的描述" + i);
book.setName("平凡的世界" + i);
book.setNumber(i + 100);
int num = bookDao.addBook(book);
}
System.out.println("数据生成完毕");
}
//查询数据测试
@Test
public void queryById() {
Book book = bookDao.queryById(101);
System.out.println(book);
}
//查询全部数据测试
@Test
public void queryAll() {
List<Book> books = bookDao.queryAll(1, 1000);
System.out.println(books);
}
//更新数据测试
@Test
public void updateBook() {
Book book = new Book();
book.setBookId(101);
book.setDetail("这是来自一本书的描述---修改");
book.setName("平凡的世界---修改");
book.setNumber(100);
int num = bookDao.updateBook(book);
}
//删除数据测试
@Test
public void deleteBookById() {
bookDao.deleteBookById(100);
}
}
上面就是整个测试类进行数据库增删改查的测试,
测试举例: addBook模块 (由于在我的表booksystem里面,一开始没有预先准备数据,所以这里采用java代码的方式自动生成数据加入到数据库的表中。)——
选中在bookdaotest.java文件中的addBook()方法上的@Test注解,右键以Junit Test运行。这样就能加入数据到表里。
图示:
在看数据库里的表:
成功插入数据,其他test就是删查改的测试,同样方法测试即可。
You got a dream, you gotta protect it.
如果你有梦想的话,就要去捍卫它 。 ——《当幸福来敲门》
来源:CSDN
作者:csdnzoutao
链接:https://blog.csdn.net/ITBigGod/article/details/79321472