2017-01-09 4 views
0

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

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

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

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

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

enter image description here

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

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

enter image description here

+0

Более того, я даже попытался дважды запустить команду оболочки и сохранить результаты в переменной в первый раз, а затем установить ее как ожидаемый результат. ЭТО ВСЕ ЕЩЕ НЕ СКАЛО! | набор | VarAddress | команда запуска | cat AddressNoSpaces.txt | | проверить | команда запуска | cat AddressNoSpaces.txt | @ {VarAddress} | – tester

ответ

0

OK проблема решена, то кажется, что вывод команды оболочки добавил новую строку символ, который FitNesse не нравится. Я изменил этот класс java, чтобы удалить возвращаемое значение из последнего символа, и он работает.

Смежные вопросы