3.2K Star 8.8K Fork 3.6K

GVPJFinal / JFinal

 / 详情

jfinal-3.6_demo_for_maven 使用junit单元测试异常

待办的
创建于  
2019-03-08 02:34

输入图片说明
测试环境和代码方法如上,jfinal-3.6、jfinal-undertow环境下该访问数据库测试方法报空指针异常,跟踪代码是Model._getConfig()方法无法拿到数据库配置信息,请问有什么好的解决办法吗? 

评论 (1)

天天向上 创建了任务

你没有加载ActiveRecord,导致底层并没有创建Blog的模型数据库操作对象。看例子.
官网文档有说: https://jfinal.com/doc/5-15

可以参考以下例子测试Service层的:

package com.demo.test.module;


import com.demo.module.blog.Blog;
import com.demo.module.blog.BlogService;
import com.jfinal.aop.Aop;
import com.jfinal.log.Log;
import com.jfinal.log.Log4jLog;
import com.jfinal.log.Log4jLogFactory;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.druid.DruidPlugin;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

/**
 * https://jfinal.com/doc/5-15
 * Log4j: https://sematext.com/blog/log4j-tutorial/
 */
@RunWith(JUnit4.class)
public class TestBlog {

    static {
        BasicConfigurator.configure();
    }

    private static Logger log = Logger.getLogger(TestBlog.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.addMapping("blog", Blog.class);

        // 与 jfinal web 环境唯一的不同是要手动调用一次相关插件的start()方法
        dp.start();
        arp.start();

        service = Aop.get(BlogService.class);
    }

    @After
    public void onTearDown(){
        arp.stop();
        dp.stop();

    }

    @Test
    public void query(){
        Page<Blog> page = service.paginate(1, 10);
        log.info("page size: "+page.getTotalPage());
        for (Blog one :page.getList()) {
            log.info(one);
        }
    }

    @Test
    public void save(){
        // 通过上面简单的几行代码,即可立即开始使用
        Blog blog = new Blog();
        boolean result = blog.set("title", "title").set("content", "cxt text").save();
        assertTrue(result);
        int _id = blog.getInt("id");

        Blog old = service.findById(_id);
        assertEquals(blog.getStr("title"), old.getStr("title"));
        assertEquals(blog.getStr("content"),old.getStr("content"));
    }
}
``

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
Java
1
https://gitee.com/jfinal/jfinal.git
git@gitee.com:jfinal/jfinal.git
jfinal
jfinal
JFinal

搜索帮助