- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我问是因为我在 Google 中找到的所有示例都与 Fitnesse 教程中的相同:对内存中的列表或数组的非常简单的查询,而不是真正的数据库。
是的,Fixtures 永远不必处理这个问题,但是如果我什至无法在“API”的模拟中连接到 DB,我应该如何测试我的 fixtures?
我试图模拟的是从 FitNesse Fixture 调用以 Java 查询 PostgreSQL 数据库/表。在这个简单的示例中,我试图从一个表中的一行中获取至少一列。当我执行代码时,它会自行完美运行。问题是当试图通过夹具从 Fitnesse 执行时。调用 JDBC 驱动程序时,它总是因 ClassNotFoundException 而失败。单独运行代码不会发生这种情况。
这是执行查询的代码:
package queriespackage;
import java.sql.*;
public class testQuery01 {
public static Connection openDBConnection(){
Connection connectionString = null;
try {
String dbhost = "SOMEURL";//Redacted
String port = "SOMEPORT";//Redacted
String dbname = "THEDBNAME";//Redacted
String username = "SOMEUSER";//Redacted
String password = "SOMEPASSWORD";//Redacted
String driverJDBC = "org.postgresql.Driver";
Class.forName(driverJDBC);
connectionString = DriverManager.getConnection("jdbc:postgresql://" + dbhost + ":" + port + "/" + dbname,username,password);
connectionString.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace(System.err);
System.exit(0);
} catch (Exception e) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
};
return connectionString;
};
public static ResultSet executeQuery(Connection connectionString, int intAccountId) throws SQLException{
Statement querySession = connectionString.createStatement();
//The query string
String queryString = "SELECT DISTINCT "
+ "account_search.account_id,"
+ "account_search.account_name"
+ " FROM account_search "
+ " WHERE"
+ " account_search.account_id = "+ intAccountId
+ "LIMIT 1";
ResultSet queryResult = querySession.executeQuery(queryString);
return queryResult;
};
public static String processQueryResult(ResultSet queryResult) throws SQLException{
String strQueryValueReturned = null;
while (queryResult.next()) {
strQueryValueReturned = queryResult.getString("account_name");
};
return strQueryValueReturned;
};
public static boolean closeDBConnection(Connection connectionString){
try {
if(connectionString!=null){
connectionString.close();
}
} catch (SQLException e) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
};
return true;
};
public static String testQuery(int intAccountId) throws SQLException, ClassNotFoundException{
boolean bolConnectionStatus = false;
String strValueReturned = null;
Connection connectionString = openDBConnection();
if(connectionString != null){
ResultSet qryQueryResult = executeQuery(connectionString, intAccountId);
strValueReturned = processQueryResult(qryQueryResult);
bolConnectionStatus = closeDBConnection(connectionString);
if(!bolConnectionStatus){
System.exit(0);
}
}else{
System.exit(0);
};
return strValueReturned;
};
};
如果我向该代码添加 Main 方法,将“intAccountId”的参数值传递给它,它会成功返回帐户“account_name”的名称,只是正如预期的那样。
现在这是 FitNesse 测试应该调用的 Fixture:
package fixturespackage;
import java.sql.SQLException;
import queriespackage.testQuery01;
public class testFixture01{
private int Int_AccountId;
//Fixture Constructor (setter)
public testFixture01(int Int_AccountId){
this.Int_AccountId = Int_AccountId;
};
public String query() throws SQLException, ClassNotFoundException{
return testQuery01.testQuery(Int_AccountId);
};
};
正如 FitNesse 指南所说,必须有一个“查询”方法,它对数据库中的接口(interface)进行实际调用。我不得不添加一个构造函数而不是“setter”,因为 FitNesse 实际上需要它:“Could not invoke constructor for fixturepackage.testFixture01”
这是 FitNesse 页面:
!***> System Variables
!define TEST_SYSTEM {slim}
!path C:\FitnessTest\bin
*!
|Query: fixturespackage.testFixture01|21 |
|Str_AccountName |
|SomeName |
这是我的 BuildPath 的屏幕截图,因此您可以看到我有适用于 Java 8、JDK 1.8、JRE 1.8 的 JDBC 库......并且项目中包含“org.postgresql.Driver.class”。
这是我从 FitNesse 运行时收到的错误:
这是我在使用 Inspect 工具调试 FitNesse 失败的行时得到的错误:
... 是的,我还尝试通过硬编码 JDBC 的名称:
我在 FitNesse 指南和 Google 上搜索了很多真实生活中的例子。
FitNesse 指南可能内容广泛,但老实说,它充满了“脏话”、不切实际和不完整的示例,并且遗漏了很多信息。
所以,再问一次,有没有人使用 FitNesse 进行过真实生活测试,提出问题,这可以帮助我找出我做错了什么?
最佳答案
我不得不承认我只用 FitNesse 做过有限的数据库测试,但我已经使用它们(查询 DB2)。我没有使用查询表(或编写自己的固定装置来查询),而是使用了 jdbcslim结合脚本表和场景。
无法找到驱动程序类这一事实表明,虽然 jar 存在于您的 IDE 的类路径中,但当 FitNesse 运行您的夹具代码时它不可用。
我注意到您将类路径指定为 wiki 中的单个目录。在 Java 中,这意味着所有类文件都应该在该目录中(作为 .class 文件,在它们定义的包的正确子目录中)。它不会在该目录中获取任何 jar(或 zip)。您是否将数据库驱动程序的 jar 解压到该目录?如果没有,您需要使用数据库驱动程序添加指向 jar 的 !path
行(因此包含文件名的整个路径)。
现在列出您需要的每个 jar 很快就会变得很麻烦,因此您也可以使用通配符。我倾向于将我需要的所有 jars 复制到一个目录,该目录还包含我的 fixture .class 文件,并添加一个 !path
行加载该目录中的所有 jars。因此,如果您还将数据库驱动程序复制到您提出问题的目录中,您可以确保它和您自己的固定装置可通过
!path C:\FitnessTest\bin
!path C:\FitnessTest\bin\*.jar
关于java - 有没有人做过查询 REAL 数据库的 FitNesse 测试?我无法使 Fitnesse 连接成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54372624/
我一直在尝试通过健身套件设置页面为数据库连接参数设置环境变量属性。我已经通过在单个测试页面上设置环境变量来对此进行了测试,当我这样做时,它确实在我的 fixture API 中得到了解决。但是当我将它
以前在我的 Fitnesse 装置中,我使用以下命令指定了预期的 WCF 异常: exception[FaultException] 从那时起,我将 WCF 服务转换为返回强类型的 FaultCont
在fitnesse.NET代码中是否有获取当前测试名称的API?我的 fixture 类继承了 fitlibrary.SequenceFixture。 最佳答案 您可以使用变量 ${PAGE_NAME
通过命令行运行 Fitnesse 测试时,我收到 ClassNotFound 异常 由 Java.lang.ClassNotFoundException:fitnesse.runner.testRun
我正在使用 Fitnesse 来测试我们项目的 API,并且我为每个接口(interface)创建了场景表,因此我们可以通过调用场景将请求发送到任何地方。现在我们需要基于随机循环计数来循环执行场景。
我想在 FitNesse 变量中存储以下字符串: !*< comment {{{ 和 }}} *! 不幸的是,它们包含大括号“{}”的事实对于 FitNesse 中的变量声明是有问题的,因为我必须这样
我在根级别有一个设置页面,工作正常。但是,当我在 FitNesse 中添加子维基时,我想在子维基级别放置一个设置页面。这会被包含在内,但根级别的 SetUp 不会包含在内。 例如,具有以下结构: Fo
我想在 FitNesse 变量中存储以下字符串: !*< comment {{{ 和 }}} *! 不幸的是,它们包含大括号“{}”的事实对于 FitNesse 中的变量声明是有问题的,因为我必须这样
我有一个测试套件,测试顺序如下: Suite1---A B C 如何更改测试用例的顺序? 我尝试过重构,但没有帮助。 最佳答案 看起来这不可能... Remembe
我有一个返回业务对象列表的 Fitnesse RowFixture。该对象有一个字段,它是一个代表 0 和 1 之间百分比的浮点数。业务对象的使用者将是来自设计者的网页或报告,因此百分比的格式将取决于
我正在为 Web 应用程序编写 Fitnesse 测试。测试项目之一是下拉框,其值由当前日期决定,格式为DD/MM/YYYY。 我认为在 Fitnesse 套件中使用 !today 变量可能是一种设置
我已经使用 Eclipse 使用某些方法实现了 Web 服务。 然后我把它导出到一个WAR文件,这个文件是要和Tomcat一起使用的。 然后我使用 wsimport 为我的网络服务创建“ stub ”
我正在尝试使用即 !|Execute|select * from abc| 在 DBfit 中获取 sql 查询输出,但不知道它将如何在 DBfit 中显示。 最佳答案 我认为您正在寻找 Inspec
我尝试通过 FitNesse 测试代码后收到错误“无法调用构造函数”。我该怎么做才能解决这个问题? 我已按照“https://www.softwaretestinghelp.com/getting-s
我问是因为我在 Google 中找到的所有示例都与 Fitnesse 教程中的相同:对内存中的列表或数组的非常简单的查询,而不是真正的数据库。 是的,Fixtures 永远不必处理这个问题,但是如果我
我希望能够将预先格式化的文本(即包含换行符)放入FitNesse灯具表的单个单元格中。有没有一种方法可以操纵FitNesse Wiki标记来做到这一点? 最佳答案 用 !- -!获取多行表格单元格,使
我正在使用 FitNesse 来测试 Web 服务响应,并使用 check 来比较预期响应与实际响应。 在某些情况下,检查失败,我无法看出导致检查失败的预期与实际之间的差异。 这是它在特定实例(许多类
运行健身测试时,我看到它被忽略(未运行)。我不明白为什么。下面是代码: #!include .ActionDefinitions !path C:\Users\rdixit\Documents\Vis
我已经阅读了 fitnesse 用户指南。但我似乎很难理解,因为我想测试一个网络服务。 问题如下我有一个请求 xml 文件和响应 xml 文件。在请求文件中,我有 userid 和 logon id
我刚刚继承了一个旧的 Java 代码库(大约 10 - 15 岁)。它没有任何自动化测试范围,或者至少当代世界知道它。首先,我打算围绕它编写一些 Fitnesse 脚本。 我知道 Concordion
我是一名优秀的程序员,十分优秀!