Jfinal 框架,junit单元测试连接数据库报空指针问题

问题:Jfinal 单元测试的时候,如果查询数据库会报空指针错误

报错消息:

解决办法:执行单侧的时候实例化数据库连接

package demo.utils;

import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import org.junit.Before;
import org.junit.Test;

/**
 * @Description: 单侧样例
 * @Param:
 * @return:
 * @Author: tom
 * @Date: 2023/11/22
 */
public class TestDemo {
    /**
     * @Description: 实例化数据库连接
     * @Param: []
     * @return: void
     * @Author: tom
     * @Date: 2023/11/22
     */
    @Before
    public void databaseInit() {
        // 配置 druid 数据库连接池插件
        String url = "jdbc:postgresql://127.0.0.1:5432/database_name";
        String db = "database_name";
        String userName = Global.getProp("database_username");
        String pass = Global.getProp("database_password");
        DruidPlugin druidPlugin = new DruidPlugin(url, userName, pass);
        // 启动连接池
        druidPlugin.start();
        // 配置ActiveRecord插件
        ActiveRecordPlugin arp1 = new ActiveRecordPlugin(db, druidPlugin);
        //设置你的数据库方言 不然 分页会报错        
        arp1.setDialect(new PostgreSqlDialect());
        // 启动jfinal
        arp1.start();
    }

    /**
     * @Description: 执行主方法
     * @Param: []
     * @return: void
     * @Author: tom
     * @Date: 2023/11/22
     */
    @Test
    public void test() {
        String generate = SnGenerateUtil.generate();
        System.out.println(generate);
    }
}

这样单侧就可以操作数据库了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是几个 JFinal 项目的单元测试示例: 1. 测试控制器(Controller): ```java public class UserControllerTest extends JFinalTestBase { public void testIndex() { // 模拟请求 invoke("/user/index"); // 验证响应状态码 assertStatus(200); // 验证响应内容 assertContains("用户列表"); } public void testAdd() { // 模拟请求 invoke("/user/add", HttpMethod.POST, new Para("name", "Tom"), new Para("age", "18")); // 验证响应状态码 assertStatus(200); // 验证响应内容 assertContains("添加成功"); } public void testDelete() { // 模拟请求 invoke("/user/delete/1", HttpMethod.DELETE); // 验证响应状态码 assertStatus(200); // 验证响应内容 assertContains("删除成功"); } } ``` 2. 测试模型(Model): ```java public class UserModelTest extends JFinalTestBase { public void testSave() { UserModel user = new UserModel(); user.setName("Tom"); user.setAge(18); // 保存用户 boolean result = user.save(); // 验证保存结果 assertTrue(result); // 验证用户是否存在 UserModel savedUser = UserModel.dao.findFirst("select * from user where name=?", "Tom"); assertNotNull(savedUser); assertEquals("Tom", savedUser.getName()); assertEquals(18, savedUser.getAge().intValue()); } public void testDelete() { // 删除用户 boolean result = UserModel.dao.deleteById(1); // 验证删除结果 assertTrue(result); // 验证用户是否存在 UserModel deletedUser = UserModel.dao.findById(1); assertNull(deletedUser); } } ``` 3. 测试服务(Service): ```java public class UserServiceTest extends JFinalTestBase { public void testAddUser() { UserService userService = new UserService(); boolean result = userService.addUser("Tom", 18); assertTrue(result); UserModel savedUser = UserModel.dao.findFirst("select * from user where name=?", "Tom"); assertNotNull(savedUser); assertEquals("Tom", savedUser.getName()); assertEquals(18, savedUser.getAge().intValue()); } public void testDeleteUser() { UserService userService = new UserService(); boolean result = userService.deleteUser(1); assertTrue(result); UserModel deletedUser = UserModel.dao.findById(1); assertNull(deletedUser); } } ``` 以上示例仅供参考,具体的单元测试内容和方法需要根据实际项目进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值