[JavaWeb]_[初级]_[对Jfinal框架的Service层进行单元测试]

Posted infoworld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JavaWeb]_[初级]_[对Jfinal框架的Service层进行单元测试]相关的知识,希望对你有一定的参考价值。

场景

  1. 开发JavaWeb网站时,无论是否使用框架,都需要进行单元测试。比如对数据库查询的接口进行单元测试,直接查询和更新,避免了从浏览器进入的一系列鼠标点击操作,节约了测试时间。

  2. 这里使用了常见的国内中小型框架Jfinal来开发网站,那么如何对这个框架的BlogService进行单元测试?

说明

  1. Java使用JUnit进行常规的单元测试。这里使用项目4.9.15_demo_for_maven[3]作为测试源码. 关于导入4.9.15_demo_for_maven可以参考搭建jfinal_4.9.15_demo_for_maven开发环境[5]

  2. 修改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>
    
  3. 之后在项目的src->test里建com.demo.blog.test.TestBlogService类,对应测试BlogService接口. 接着就是参考独立使用 ActiveRecord[1]创建独立的DruidPluginActiveRecordPlugin插件,在启动测试之前加载并启动。

    @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);
    
    
  4. 接着就是编写单元测试的方法, 这里测试了分页方法。测试时,选中方法左边的绿色三角右键-〉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:

例子

  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

参考

  1. JFinal 文档、资料、学习、API,独立使用 ActiveRecord

  2. JFinal 文档、资料、学习、API,Maven 基础

  3. 4.9.15_demo_for_maven

  4. Apache log4j 1.2 - Short introduction to log4j

  5. 搭建jfinal_4.9.15_demo_for_maven开发环境

  6. JUnit4

以上是关于[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开发环境]

[JavaWeb]_[初级]_[jfinal集成ehcache缓存]

[JavaWeb]_[初级]_[jfinal集成ehcache缓存]