[JavaWeb]_[初级]_[对Jfinal框架的Service层进行单元测试]
Posted infoworld
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JavaWeb]_[初级]_[对Jfinal框架的Service层进行单元测试]相关的知识,希望对你有一定的参考价值。
场景
-
开发
JavaWeb
网站时,无论是否使用框架,都需要进行单元测试。比如对数据库查询的接口进行单元测试,直接查询和更新,避免了从浏览器进入的一系列鼠标点击操作,节约了测试时间。 -
这里使用了常见的国内中小型框架
Jfinal
来开发网站,那么如何对这个框架的BlogService
进行单元测试?
说明
-
Java
使用JUnit
进行常规的单元测试。这里使用项目4.9.15_demo_for_maven
[3]作为测试源码. 关于导入4.9.15_demo_for_maven
可以参考搭建jfinal_4.9.15_demo_for_maven开发环境
[5]。 -
修改
pom.xml
文件,把JUnit
的依赖从改为4.x
版本的, 原项目的3.x
太古老了。之后选中pom.xml
,右键Maven
->Reload Project
, 注意这里使用IntelliJ IDEA
作为开发工具。<!-- junit 单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency>
-
之后在项目的
src
->test
里建com.demo.blog.test.TestBlogService
类,对应测试BlogService
接口. 接着就是参考独立使用 ActiveRecord
[1]创建独立的DruidPlugin
和ActiveRecordPlugin
插件,在启动测试之前加载并启动。@Before public void onSetUp() dp = new DruidPlugin("jdbc:mysql://localhost/jfinal_demo?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull", "root", ""); arp = new ActiveRecordPlugin(dp); arp.setShowSql(true); arp.addMapping("blog", Blog.class); // 与 jfinal web 环境唯一的不同是要手动调用一次相关插件的start()方法 dp.start(); arp.start(); service = Aop.get(BlogService.class); log.setLevel(Level.INFO);
-
接着就是编写单元测试的方法, 这里测试了分页方法。测试时,选中方法左边的绿色三角右键-〉
Debug testPaginate
@Test public void testPaginate() Page<Blog> page = service.paginate(1, 10); for (Blog blog :page.getList()) Assert.assertNotNull(blog.getTitle()); Assert.assertNotNull(blog.getContent()); log.info(blog.getTitle()+"=>"+blog.getContent());
图1:
例子
- 这里是
TestBlogService
的源码.
package com.demo.blog.test;
import com.demo.blog.BlogService;
import com.demo.common.model.Blog;
import com.jfinal.aop.Aop;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.druid.DruidPlugin;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class TestBlogService
private static Logger log = Logger.getLogger(TestBlogService.class);
DruidPlugin dp;
ActiveRecordPlugin arp;
BlogService service;
@Before
public void onSetUp()
dp = new DruidPlugin("jdbc:mysql://localhost/jfinal_demo?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull", "root", "");
arp = new ActiveRecordPlugin(dp);
arp.setShowSql(true);
arp.addMapping("blog", Blog.class);
// 与 jfinal web 环境唯一的不同是要手动调用一次相关插件的start()方法
dp.start();
arp.start();
service = Aop.get(BlogService.class);
log.setLevel(Level.INFO);
@After
public void onTearDown()
arp.stop();
dp.stop();
@Test
public void testPaginate()
Page<Blog> page = service.paginate(1, 10);
for (Blog blog :page.getList())
Assert.assertNotNull(blog.getTitle());
Assert.assertNotNull(blog.getContent());
log.info(blog.getTitle()+"=>"+blog.getContent());
输出
2022-04-11 15:52:55
[INFO]-[Thread: main]-[com.demo.blog.test.TestBlogService.testPaginate()]: JFinal Demo Title here=>JFinal Demo Content here
2022-04-11 15:52:55
[INFO]-[Thread: main]-[com.demo.blog.test.TestBlogService.testPaginate()]: test 1=>test 1
...
下载
https://download.csdn.net/download/infoworld/85110637
参考
以上是关于[JavaWeb]_[初级]_[对Jfinal框架的Service层进行单元测试]的主要内容,如果未能解决你的问题,请参考以下文章
[JavaWeb]_[初级]_[对Jfinal框架的Controller进行单元测试]
[JavaWeb]_[初级]_[对Jfinal框架的Controller进行单元测试]
[JavaWeb]_[初级]_[搭建jfinal_4.9.15_demo_for_maven开发环境]
[JavaWeb]_[初级]_[搭建jfinal_4.9.15_demo_for_maven开发环境]