Java - 黄瓜示例
看起来我缺少步骤,它抱怨缺少步骤并将其视为未定义
.feature文件:
Feature: Roman Feature
Scenario: Convert Integer to Roman Number
Given I am on the demo page
When I pass number 1
Then the roman result is I
Scenario: Convert Integer to Roman Number
Given I am on the demo page
When I pass number 5
Then the roman result is V
步骤文件:
@When("^I pass number (\\d+)$")
public void convert_numbers_to_roman(int arg1) throws Throwable {
// convert number
}
@Then("^the roman result is (\\d+)$")
public void the_roman_result_is(int result) throws Throwable {
// match result
}
当我运行测试时
Scenario: Convert Integer to Roman Number [90m# net/xeric/demos/roman.feature:3[0m
[32mGiven [0m[32mI am on the demo page[0m [90m# DemoSteps.i_am_on_the_demo_page()[0m
[32mWhen [0m[32mI pass number [0m[32m[1m1[0m [90m# DemoSteps.convert_numbers_to_roman(int)[0m
[33mThen [0m[33mthe roman result is I[0m
6场景2未定义 您可以使用以下代码段实现缺少的步骤:
@Then("^the roman result is I$")
public void the_roman_result_is_I() throws Throwable {
// Write code here that turns the phrase above into concrete actions
throw new PendingException();
}
答案 0 :(得分:1)
我会考虑将罗马数字作为字符串捕获,因此使用正则表达式(。*)
你then
步骤看起来像这样:
@Then("^the roman result is (.*)$")
public void the_roman_result_is_I(String expectedRoman) throws Throwable {
// Write code here that turns the phrase above into concrete actions
throw new PendingException();
}
这与Sebastians的答案类似,但在我看来,这是一个更简单的正则表达式。它捕获任何字符串并将其作为参数传递。
您可能会在步骤中执行的断言将告诉您是否存在损坏的情况。可能更容易解决失败的断言,而不是麻烦射击失踪的步骤。
答案 1 :(得分:0)
问题在于你的正则表达式 - \\d
只会匹配阿拉伯数字(Java-ese中的^the roman result is ([IVMCLX]+)$
)。
你真正想要的是XkbSetDetectableAutoRepeat
。这将匹配一个或多个罗马数字字符,将结果粘贴到您选择的字符串中。