# jdbc-test **Repository Path**: frh16/jdbc-test ## Basic Information - **Project Name**: jdbc-test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-22 - **Last Updated**: 2026-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 执行前准备 1. 手动初始化好实例,不要新增数据库 2. 如果用`etc/GBaseInit_gbasedbt.sh`初始化实例,最后会创建`gbasedb`,把它删了 #### 用 idea 执行用例 1. 项目字符集为`GBK`,不要改,`src/test/resources`保持`UTF-8` 2. 驱动放到`lib`下,修改`pom.xml`,改驱动的`systemPath`,改完右上角出现一个类似刷新的按钮,点一下 ```xml com.gbasedbt jdbc 3.3.3_1X1 system ${project.basedir}/lib/gbasedbtjdbc_3.3.3_1X1_c19c40.jar ``` 3. 填写参数,`resources/conf.properties` 4. `cn.gbase.SuiteRunner`,在`@IncludeTags`加上要测的用例版本,比如经确认333版本只支持330的接口,就改成`@IncludeCategories({V330.class})`,要是测试350发布的新版本,就改成`@IncludeCategories({V330.class, V340.class, V350.class})` 5. 点击`public class SuiteRunner {`左边的运行按钮,点击弹出菜单中的`Run SuiteRunner` 6. 改变`resources/conf.properties`的`sqlmode`和`charset`,执行所有需要测试的组合情况,执行之前重新初始化实例,或把非当前字符集的用户库都删了 #### 编写用例 1. 由于驱动支持`jdk1.6`及以上,所以放弃了更好用的`junit5`(要求`java8`及以上),改用`junit4`,防止万一有`jdk1.6`的测试需求,所以不要用jdk1.7及以上的语法 #### 根据驱动源码覆盖,补充用例说明 1. `conn.isUSVER()` This function returns true if the server is 9.0+. server 版本 3302、3402、3503X2_4,都返回 true 所以源码中`if (conn.isUSVER())`的`else`逻辑都覆盖不到,不对这个情况补充用例 2. 按要求,`if (conn.isANSI())`的逻辑不覆盖 3. 按要求,`if (conn.isOnLine())`的`else`逻辑不覆盖 #### 一些说明 1. 用户可以调用非`jdbc`规范的接口,比如`jdbc`规范接口`java.sql.Connection`,`com.gbasedbt.jdbc.IfxConnect`接口继承了它,`IfxSqliConnection`实现了`IfxConnect` 到底允不允许用户调用`IfxConnect`和`IfxSqliConnection`的接口,问过,不知道。结论是,以前测了什么还测什么。有的`fts`写的用例是错的,比如`IfxSqliConnection.xaSetSerWarnFlags`没有返回值 测试预期是null,完全没意义,不再测试这个接口,问过研发,说这个接口不应该用户调用 2. 从`fts`转过来的用例,`gbase模式`下,创建存储过程,基本都是`oracle`语法,目前没问题,没改 3. 如果新添加的`maven`依赖,`build` 提示` transfer failed for https://repo.maven.apache.org...... `到本地 maven 仓库,删掉 `_remote.repositories` 文件(或者重命名) 4. 标注 `FIXME` 的用例,用正确的预期,肯定失败,但是研发应该永远不会改,就算改也不会在老版本改,所以老版本用错误的预期结果就行了, 用错误的预期也有意义,比如,一共10个参数,只有1个用的错误预期,其他9个还是正确预期,还可以验证 不能忽略对比这1个参数,因为如果研发改了,用例就失败,到时再根据不同版本设置不同预期文件 #### TODO: 1. `com.googlecode.junit-toolbox`的依赖不全,如果用`maven`坐标,会报错,有机会要从外网导入。现在放到`lib`下,只使用少部分功能,暂时没问题。