我最近开始研究 BDD Cucumber。我正在使用 scala 来编写测试用例。我正在尝试使用场景大纲并在步骤定义中传递参数。我的代码如下。
Scenario Outline: Data is parsed and persisted
Given Portal is running
When A data of <type> is received
Then The data of <type> with <Id> should be parsed and persisted
Examples:
| type | Id |
| Personal | 1 |
|Professional | 2 |
现在在我的条件下,我尝试按如下方式获取这些参数
When("""^A data of \"([^\"]*)\" is received$""") {
(type: String) =>
//My code
}
现在运行我的代码时,我每次都会收到以下错误。
io.cucumber.junit.UndefinedStepException: The step "A data of Personal is received" is undefined. You can implement it using the snippet(s) below:
When("""A data of Personal is received""") { () =>
// Write code here that turns the phrase above into concrete actions
throw new io.cucumber.scala.PendingException()
}
虽然我什么时候有我的代码。另外,如果我不使用场景大纲,那么它工作正常,但我想在我的代码中使用场景大纲。
我在功能文件中使用标签来运行我的测试用例。当我使用命令 sbt test @tag1 运行测试用例时,测试用例执行正常,但是当所有测试用例在 cmd 上完成运行时,我收到以下错误:
[error] Expected ';'
[error] @tag1
我尝试输入“;”标签后但仍然出现相同的错误 这是什么问题以及如何解决?
您缺少
<type>
周围的双引号:
When A data of "<type>" is received
只是一些一般性建议。
在做cuking时让事情尽可能简单,注重清晰度和简单性,不要担心重复。
如果你写了 2 个简单的场景,你的任务会简单得多
Scenario: Personal data
Given Portal is running
When personal data is received
Then personal data should be persisted
Scenario: Professional data
...
其次,不要使用标签来运行你的功能,你还不需要标签。
如果您避免场景轮廓、正则表达式、标签、转换等,您可以更有效地进行操作。Cucumber 的主要功能是使用自然语言来清晰地表达自己。专注于这一点并保持简单......
我无法将标签名称放入测试运行程序类中。将标签名称放入测试运行程序类后,它显示编译时错误