Что ожидает функция проверки DoFixture в качестве ввода?

Я схожу с ума здесь, так что терпите меня... Мы используем Fitnesse (с фреймворком DbFit / на основе FIT) для автоматизации некоторых тестов, в которых мы запускаем некоторые команды оболочки. У нас есть прибор, который подключается к серверу Linux, запускает команду и возвращает результаты (см. Ниже)

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;
}}

Поэтому я ожидаю, что все, что get будет отображаться на оболочке после запуска команды, будет возвращено (в виде строки) и сравнено с тем, что требует мой тест в фитнесе.

Fitnesse улавливает результаты, но всегда не удается выполнить сравнение, и я не знаю почему (я только добавил команду sed для удаления пробелов, но сравнение все равно не удается!!

Я чувствую, что Fitnesse насмехается надо мной, показывая то же самое значение для ожидаемого, фактического и разного. Это и проблема кодирования? это проблема типа Java? Как работает проверка?

Изменить: я даже попытался запустить команду оболочки дважды и сохранить результат в первый раз, а затем установить его в качестве ожидаемых результатов. Это все еще не удается.

 |set | VarAddress | run command | cat AddressNoSpaces.txt |
 |check| run command | cat AddressNoSpaces.txt | @{VarAddress} |

1 ответ

ОК, проблема решена, похоже, что вывод команды оболочки добавил новую строку char, которая фитнессу не понравилась. Я изменил этот класс Java, чтобы убрать возвращаемое значение из его последнего символа, и он работает.

Другие вопросы по тегам