2016-08-30 7 views
1

Я пытаюсь получить текущий счетчик строк, обработанный в «Примеры» в разделе «Сценарий сценария». Как получить текущее количество строк в определении шага? Я не хочу передавать число в примерах. Там в любом случае?Как определить, какая строка таблицы работает в Cucumber-JVM?

Scenario Outline: 
    When the name is entered as "<fruit>" <days> 

Examples: 
    |fruit|days| 
    |Apple|10| 
    |Orange|12| 
    |Guava|3| 
    ... 

В определении шага, я хочу, чтобы получить строку обрабатывается как 1,2,3, ... (вместо ХХХХХ).

@When("^the name is entered as \"([^\"]*)\" ([^\"]*)$") 
public void the_name_is_entered_as(String fruitName, int days) throws Throwable { 
    System.out.println("Current Row processsed is: "+XXXXXXX) 
} 

ответ

0

Лучший способ сделать это, что я могу думать (что не очень красиво) заключается в подсчете строк за кулисами сами:

private static int rowIndex = 0; 

@When("^I enter the name as \"([^\"]+)\"$") 
public void i_enter_the_name_as(String fruit) { 
    rowIndex++; 
    // now you can use it in this and subsequent steps 
} 

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

+0

Я пробовал это, но он шел 1 всегда – AKumar

+0

Для каждой строки сценария из таблицы примеров огурец или любой каркас DI инициализируют новый класс определения шага, поэтому он всегда будет показывать 1. Попробуйте ставить статику для rowIndex. Вы также можете получить объект сценария в начале до и взглянуть на метод scene.getId(). Я не уверен, но он возвращает целое число с номером строки. – Grasshopper

+0

script.getId() возвращает следующее описание функции: descriptionoutline-description: example-description: rownumber + 1. – Grasshopper

0
private Scenario scenario; 

@Before 
public void before(Scenario sce) { 
    this.scenario = sce; 
    System.out.println("SCENARIO ID -- " +scenario.getId()); 
} 

Вы получите строку, похожую на схему сценария - описание функции; описание сценария-описания; пример-описание; rownumber + 1.

Для простого сценария вы получите - описание функции; Сценарий-описание.

В случае сценария, который вы можете разделить с разделителем ";" и использовать последнюю часть после вычитания 1.

Это немного хак, который зависит от строки идентификатора сценария, оставшейся в этом шаблоне.