无法从应用程序使用 hsqldb 连接,但单元测试工作

Posted

技术标签:

【中文标题】无法从应用程序使用 hsqldb 连接,但单元测试工作【英文标题】:Cannot use hsqldb connection from app, but unit test work 【发布时间】:2013-12-04 15:41:27 【问题描述】:

我有一个旨在写入数据库的应用程序。我正在使用 hsqldb 进行开发。

我有一个可以使用insertToDB() 方法写入数据库的单元测试:

@Test
public void writeTest() throws SQLException 
    LocationImpl li = new LocationImpl();
    li.setName("TestName");
    li.setState("PA");
    li.setLattitude(100);
    li.setLongitude(200);
    LocationDAOImpl.insertIntoDB(li);
    ResultSet rs = LocationDAOImpl.getAllLocations();
    int i = 0;
            while (rs.next())
        i++;
        if (i==591)  assertEquals("TestName", rs.getString(7)); 
    

当我在这里调用它时,我收到以下错误。

java.sql.SQLException: No suitable driver found for jdbc:hsqldb:file:C:/Users/my/hsqldb/dir:

控制器代码:

@RequestMapping(value = "/addLocation", method = RequestMethod.POST)
public ModelAndView addLocation(@ModelAttribute("LocationImpl")LocationImpl locationImpl, 
   ModelMap model) throws SQLException 
     logger.info("Form submission method called");
     model.addAttribute("name", locationImpl.getName());

     LocationDAOImpl.insertIntoDB(locationImpl);
     return new ModelAndView("result", "command", locationImpl);
   

关于为什么连接从 jUnit 工作,而不是从 webapp 工作的任何想法?谢谢

【问题讨论】:

【参考方案1】:

因为 HSQLDB JDBC 驱动程序位于测试类路径中,而不是运行时类路径中。

【讨论】:

以上是关于无法从应用程序使用 hsqldb 连接,但单元测试工作的主要内容,如果未能解决你的问题,请参考以下文章

分发一个hsqldb数据库以供使用

如何在用于运行 Java 单元测试的内存数据库中模拟 Oracle (+) 外连接表示法?

无法从 hsqldb 日志文件恢复

HSQLDB为sqlserver的单元测试创​​建表

SimpleJdbcInsert由于自动生成的ID(HSQLDB)为空而无法插入

java.sql.SQLException:无法从底层数据库获取连接! — HSQLDB