2015-08-11 1 views
1

Я пытаюсь запустить Cucumber cli из командной строки Windows (Windows 10). Все хорошо до сих пор. Я могу заставить его загрузить мои файлы .feature из правильного места и сказать, какие методы мне нужно реализовать. Я создал класс с @Give, @When, @ Потом обозначил методы класса, а затем скомпилировал мой класс.Синтаксис опции -glue для Java Cucumber cli (cucumber.api.cli.Main)

Файл .class находится в каталоге com \ company \ automation \ каталога \ bin моего проекта Eclipse и все поддерживающие jars находятся в C: \ java. Я использую следующий синтаксис в файле .bat, чтобы попытаться запустить, но Cucumber сообщает, что он не может найти мои методы и предлагает мне написать эти «пропущенные шаги».

Команда я использую:

Java -classpath "C: \ Java \ *", "C: \ Users \ Mark \ рабочее пространство \ Компания Автоматизация \ Bin \ *" cucumber.api.cli .Main --glue "C: \ Users \ Mark \ workspace \ Company Automation \ bin \ com \ company \ automation" "C: \ Users \ Mark \ workspace \ Автоматизация компании \ Функции"

Моя реализация " отсутствуют шаги»ниже:

package com.company.automation; 

import cucumber.api.PendingException; 
import cucumber.api.java.en.Given; 
import cucumber.api.java.en.Then; 
import cucumber.api.java.en.When; 

public class CucumberImplementation { 

    @Given("^I am a visitor$") 
    public void i_am_a_visitor() throws Throwable { 
     // Write code here that turns the phrase above into concrete actions 
     throw new PendingException(); 
    } 

    @When("^I visit \"([^\"]*)\"$") 
    public void i_visit(String arg1) throws Throwable { 
     // Write code here that turns the phrase above into concrete actions 
     throw new PendingException(); 
    } 

    @Then("^there must be a \"([^\"]*)\" element$") 
    public void there_must_be_a_element(String arg1) throws Throwable { 
     // Write code here that turns the phrase above into concrete actions 
     throw new PendingException(); 
    } 

    @Then("^the \"([^\"]*)\" element must contain a \"([^\"]*)\" element$") 
    public void the_element_must_contain_a_element(String arg1, String arg2) throws Throwable { 
     // Write code here that turns the phrase above into concrete actions 
     throw new PendingException(); 
    } 

    @Then("^the \"([^\"]*)\" element must contain a \"([^\"]*)\" link$") 
    public void the_element_must_contain_a_link(String arg1, String arg2) throws Throwable { 
     // Write code here that turns the phrase above into concrete actions 
     throw new PendingException(); 
    } 

    @Then("^there must be a \"([^\"]*)\" element after the \"([^\"]*)\" element$") 
    public void there_must_be_a_element_after_the_element(String arg1, String arg2) throws Throwable { 
     // Write code here that turns the phrase above into concrete actions 
     throw new PendingException(); 
    } 

} 

Я пробовал все виды различных форм пути для --glue опции, включая путь к классам: com.company.automat ион, classpath: com.company.automation.CucumberImplementation.class и аналогичные, но с обратной косой чертой и forwardswards. Похоже, что любой синтаксис, который я использую для аргумента в опции -glue, Cucumber, похоже, полностью игнорирует его и даже не бросает PendingException на первом шаге. Также он не жалуется, что аргумент опции -glue является недопустимым путем, если я просто кладу там тарабарщину.

Использование огурца-core-1.2.4.jar в качестве основы.

+0

Вы пробовали что-то вроде '-glue com.myco.myproject.cucumber.steps'? Просто укажите пакет, содержащий ваши шаги. – Kieran

+0

Пробовал это .. --glue com.company.automation Я пробовал практически каждый формат, о котором я могу думать сейчас. –

+0

@MarkWilkinson, у вас в итоге был успех? Я борюсь с той же проблемой. – Craig

ответ

2

Была такая же проблема.

Это, как я решил его (благодаря комментариям выше):

--glue com.test.app 

где «com.test.app» представляет собой пакет из моего файла определения шага.