目前,在我们项目的测试中,我们使用带注释的步骤定义,例如:
public class Steps {
@Given("^Step name$")
void methodName() {
// do sth
}
}
到lambda表达式:
public class Steps implements En {
public Steps() {
Given("^Step name$", () ->
// do sth
);
}
}
当使用Intellij Cucumber Java插件时,很容易找到某个步骤的用法,因为它查找了带注释方法的用法(我推测)。 但是,现在我们必须手动搜索作为参数传递的正则表达式。
我的第一个问题是:使用lambda表达式有一种巧妙的方法吗?
此外:当使用Intellij的工具进行版本控制并提交包含大量步骤定义的文件时,代码分析工具将永远持续下去(我想这是因为构造函数必须编写大量代码)。
所以第二个问题是:由于步骤库不可能缩小,并且经常使用步骤使用搜索,切换回Ye Olde Way也不是一个好主意,即使用带注释的方法?
答案 0 :(得分:1)
查找java-8样式步骤定义的用法还不行。可以投票并遵循此请求:IDEA-144648。
答案 1 :(得分:0)
在使用时在这里工作
pom.xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<version.cucumber>3.0.2</version.cucumber>
<!-- following versions were also checked -->
<!--<version.cucumber>2.4.0</version.cucumber>-->
<!--<version.cucumber>2.3.1</version.cucumber>-->
</properties>
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
<version>${version.cucumber}</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${version.cucumber}</version>
<scope>test</scope>
</dependency>
</dependencies>
userdata.feature
Feature: demo for java8 glue classes
Scenario: user login on home page
Given user is on home page
When user navigate to login page
And user enters credentials to login
Then message displayed login successfully
胶水/StepPojo.java
package glue;
import cucumber.api.PendingException;
import cucumber.api.java8.En;
public class StepPojo implements En {
public StepPojo() {
Given("^User is on Home Page$", () -> {
throw new PendingException();
});
When("^User Navigate to LogIn Page$", () -> {
// Write code here that turns the phrase above into concrete actions
throw new PendingException();
});
And("^User enters Credentials to LogIn$", () -> {
// Write code here that turns the phrase above into concrete actions
throw new PendingException();
});
Then("^Message displayed Login Successfully$", () -> {
// Write code here that turns the phrase above into concrete actions
throw new PendingException();
});
}
}
类StepPojo.java
是由Cucumber插件通过在功能文件中选择一个步骤的同时按ALT+ENTER
创建的。
功能文件之前显示为
步骤定义为
[
当您在按住CTRL
键的同时将鼠标悬停在一步上时,它看起来像
在按住CTRL
键的同时单击某个步骤时,将跳至相应的方法,例如
Given("^User is on Home Page$", () -> {
throw new PendingException();
});