DoFixture 的检查功能期望什么作为输入?
What does the DoFixture's check function expect as input?
我快要疯了,所以请耐心等待...
我们正在使用 Fitnesse(使用 DbFit 框架/基于 FIT)来自动化一些测试,其中我们 运行 一些 shell 命令。我们有一个连接到 linux 服务器的夹具,运行 命令和 returns 结果(见下文)
class SSHConnection {
private static final String DEFAULT_KEY = "~/.ssh/id_rsa";
private String host;
private String password;
private int port;
private String privateKey;
private Session session;
private String user;
/** Creates a JSch object and open a connection with a remote server using the values set in the class variables.
*/
public void connect() {.........}
/**
* Executes a command in the remote server using the connection opened by connect().
* @param command command to execute in the remote server
* @return the output result of the command as String
*/
public String execute(String command) {
logger.info("Executing command: " + command);
String result;
try {
ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
channelExec.setCommand(command);
// Open exec channel
channelExec.connect();
InputStream stream = channelExec.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
StringBuilder output = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
output.append(line).append("\n");
}
result = output.toString();
// Close exec channel
channelExec.disconnect();
logger.debug("Command executed successfully: " + result);
} catch (JSchException | IOException e) {
logger.error("Error executing command: " + e.getMessage());
e.printStackTrace();
return "";
}
return result;
}}
所以我期待在 运行 返回命令(作为字符串)后 shell 上显示的任何内容,并与我在 fitnesse 中的测试所需的内容进行比较。
Fitnesse抓到结果总是比对不通过,不知道为什么(只加了sed命令去掉空格,还是比对失败!!
我觉得 Fitnesse 在嘲笑我,向我展示了相同的预期值、实际值和差异值。
它和编码问题?是 java 类型的问题吗?支票如何运作?
编辑:我什至尝试了两次 运行ning shell 命令并第一次保存结果,然后将其设置为预期结果。还是失败了。
|set | VarAddress | run command | cat AddressNoSpaces.txt |
|check| run command | cat AddressNoSpaces.txt | @{VarAddress} |
OK 问题已解决,似乎 shell 命令输出添加了 fitnesse 不喜欢的新行字符。我更改了 java class 以从它的最后一个字符中删除 return 值并且它正在工作。
我快要疯了,所以请耐心等待... 我们正在使用 Fitnesse(使用 DbFit 框架/基于 FIT)来自动化一些测试,其中我们 运行 一些 shell 命令。我们有一个连接到 linux 服务器的夹具,运行 命令和 returns 结果(见下文)
class SSHConnection {
private static final String DEFAULT_KEY = "~/.ssh/id_rsa";
private String host;
private String password;
private int port;
private String privateKey;
private Session session;
private String user;
/** Creates a JSch object and open a connection with a remote server using the values set in the class variables.
*/
public void connect() {.........}
/**
* Executes a command in the remote server using the connection opened by connect().
* @param command command to execute in the remote server
* @return the output result of the command as String
*/
public String execute(String command) {
logger.info("Executing command: " + command);
String result;
try {
ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
channelExec.setCommand(command);
// Open exec channel
channelExec.connect();
InputStream stream = channelExec.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
StringBuilder output = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
output.append(line).append("\n");
}
result = output.toString();
// Close exec channel
channelExec.disconnect();
logger.debug("Command executed successfully: " + result);
} catch (JSchException | IOException e) {
logger.error("Error executing command: " + e.getMessage());
e.printStackTrace();
return "";
}
return result;
}}
所以我期待在 运行 返回命令(作为字符串)后 shell 上显示的任何内容,并与我在 fitnesse 中的测试所需的内容进行比较。
Fitnesse抓到结果总是比对不通过,不知道为什么(只加了sed命令去掉空格,还是比对失败!!
我觉得 Fitnesse 在嘲笑我,向我展示了相同的预期值、实际值和差异值。 它和编码问题?是 java 类型的问题吗?支票如何运作?
编辑:我什至尝试了两次 运行ning shell 命令并第一次保存结果,然后将其设置为预期结果。还是失败了。
|set | VarAddress | run command | cat AddressNoSpaces.txt |
|check| run command | cat AddressNoSpaces.txt | @{VarAddress} |
OK 问题已解决,似乎 shell 命令输出添加了 fitnesse 不喜欢的新行字符。我更改了 java class 以从它的最后一个字符中删除 return 值并且它正在工作。