【问题标题】:How to execute your Cucumber integration tests in Spring Boot and JUnit?如何在 Spring Boot 和 JUnit 中执行 Cucumber 集成测试?
【发布时间】:2019-04-10 14:44:55
【问题描述】:

我正在尝试使用Spring BootJUnit 运行Cucumber 测试。

但是,当我右键单击并执行 TestRunner 类时出现以下错误。

我是否缺少任何配置?

错误:

cucumber.runtime.junit.UndefinedThrowable: The step "I feed my snake" is undefined
Feature: Snake Charmer

  Scenario: Hearing your snake you anticipate sound # src/test/resources/features/first.feature:3
    Given I have hungry snake                       # SnakeMeasureTest.i_have_hungry_snake()
    When I feed my snake                            # null
    Then I receive snek snek                        # SnakeMeasureTest.receive_snek_snek()

Undefined scenarios:
src/test/resources/features/first.feature:3 # Hearing your snake you anticipate sound

1 Scenarios (1 undefined)
3 Steps (1 skipped, 1 undefined, 1 passed)
0m1.378s


You can implement missing steps with the snippets below:

@When("I feed my snake")
public void i_feed_my_snake() {
    // Write code here that turns the phrase above into concrete actions
    throw new cucumber.api.PendingException();
}

SnakeMeasureTest.java

public class SnakeMeasureTest extends CucumberStepDefinitions {

    @Autowired
    SnakeController snake;

    @Given("^I have hungry snake")
    public void i_have_hungry_snake() {
        assertEquals("hiss", snake.poke());
    }

    @When("^When I feed my snake$")
    public void when_i_feed_my_snake() {
        snake.feed();
    }

    @Then("^I receive snek snek$")
    public void receive_snek_snek() {
        assertEquals("snek snek ^_^", snake.poke());
    }

}

CucumberStepDefinitions.java

@RunWith(SpringRunner.class)
@SpringBootTest
public abstract class CucumberStepDefinitions {

}

TestRunner.java

@RunWith(Cucumber.class)
@CucumberOptions(plugin = {"pretty"}, features = {"src/test/resources/features"})
public class TestRunner {


}

first.feature (src/test/resources/features)

Feature: Snake Charmer

  Scenario: Hearing your snake you anticipate sound
    Given I have hungry snake
    When I feed my snake
    Then I receive snek snek

SnakeController.java

@Controller
public class SnakeController {

    private boolean fed;

    @Autowired
    public SnakeController() {
        super();
    }

    public void feed() {
        fed = true;
    }

    public String poke() {
        if (this.fed == true) {
            return "snek snek ^_^";
        } else {
            return "hiss";
        }
    }

} 

【问题讨论】:

  • 错误本身清楚地表明您有未定义的场景。可以加@When("I feed my snake") public void i_feed_my_snake() { // Write code here that turns the phrase above into concrete actions throw new cucumber.api.PendingException(); }

标签: spring spring-boot junit cucumber cucumber-junit


【解决方案1】:

您需要更正您的步骤: 从此:

@When("^When I feed my snake$")
public void when_i_feed_my_snake() {
    snake.feed();
}

到这里:

@When("^I feed my snake$")
public void when_i_feed_my_snake() {
    snake.feed();
}  

这个问题是你在 @When 注释中包含了黄瓜钩子'When'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2020-07-13
    • 2020-12-05
    • 1970-01-01
    相关资源
    最近更新 更多