IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> [JavaWeb]_[初级]_[对Jfinal框架的Service层进行单元测试] -> 正文阅读

[开发测试][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

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:30:46  更:2022-04-15 00:33:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:29:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码