2016-06-26 3 views
0

Я использую Concordion для тестирования некоторых компонентов Java. я напишу что-то вродеКонкордион: как получить значение параметра внутри #TEXT

<pre concordion:execute="someFunction(#TEXT, #a)"> 
    { 
    id:123, 
    name:<span concordion:echo="#b"/> 
    } 
    </pre> 

Я хочу значения #b рассчитывается и динамически заменяется. Но вместо значения #b в someFunction появляется пустая строка. Точно так же, если использовать

name:<span concordion:execute="getBValue()"/> 

Если кто-то сделал что-то вроде этого, не могли бы вы помочь.

Спасибо.

ответ

0

можно использовать execute command инициализировать переменную #NAME:

<span concordion:execute="#name=getBValue()"/> 

сопровождаемый echo command:

name: <span concordion:echo="name" /> 

или вы пытались назвать свой метод непосредственно в эхо-команды?

name: <span concordion:echo="getBValue()" /> 
+0

Я попытался использовать тег span внутри

..
разными способами, и все эти теги игнорируется. – Kass

0

Возможно, ваша проблема связана с структурой html? При использовании вложенных элементов, таких как

<pre concordion:execute=...> <span concordion:assert-equals=...>...</span> <span concordion:set=...>...</span> </pre> 

Concordion использует следующий порядок выполнения:

  1. все «стандартный» команды, такие как набор, эхо и т.д.
  2. Выполнить команду
  3. утверждают команды, такие как assert-equals

Это способ Concordion handles unusual sentence structures.

Как насчет того, чтобы выполнить команду execute внутри выделенного тега span?

<pre> <span concordion:execute=...>...</span> <span concordion:echo=...></span> </pre> 
1

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

Если вы хотите передать результат какого-то метода getBValue() в другой метод SomeFunction() у вас есть, вероятно, несколько вариантов:

  1. насчет вызова getBValue() внутри SomeFunction()?
  2. Или вы могли бы передать результат getBValue() в переменную и вызывать некоторые функции с этой переменной:

<pre concordion:execute="someFunction(#TEXT, #a, #b)"> 
 
    { 
 
    id:123, 
 
    name:placeholder-for-value-b 
 
    } 
 
</pre>

Тогда внутри SomeFunction() можно заменить заполнитель :

public void someFunction(String text, String aValue, String bValue) { 
    text.replace("placeholder-for-value-b", bValue); 
    //continue logic of someFunction 
} 
+0

Это подход, который я бы рекомендовал. См. Также http://stackoverflow.com/a/38202917/1108508, который отвечает на аналогичный вопрос. –