我想尝试一个带有黄瓜测试的示例应用程序,黄瓜测试可以只用 ruby 完成,也可以用 java 完成?请帮我举个例子。
谢谢你。
您可以查看我们在我们的地方编写的一个简单示例来演示 cucumber-jvm:https ://github.com/gphilipp/mowitnow-tdd
这个来自 Cucumber-jvm 项目https://github.com/cucumber/cucumber-jvm/tree/master/examples。Cucumber-JVM 是黄瓜的 Java 端口。可以在项目页面https://github.com/cucumber/cucumber-jvm上找到配置信息。
首先,从 Cucumber 团队克隆 java-skeleton 项目: https ://github.com/cucumber/cucumber-java-skeleton
这专门作为一个入门项目,应该开箱即用。一旦你有了一个工作项目,扩展它来包含你需要的东西就容易多了。您可以使用 Maven 构建项目:
mvn clean install
如果您希望从头开始,请检查 pom.xml 中是否有您需要的依赖项(至少 cucumber-java,可能还有 cucumber-junit 和 junit 本身来运行您的测试)。
创建一个 src/test/java 文件夹,您将在其中实施步骤定义 创建一个 src/test/resources 文件夹,您将在其中创建 .feature 文件
如果您使用的是 IDE(如 IntelliJ),则可能需要一个 Cucumber 插件。
您需要 ListItTest.java 来测试特定的集成测试,然后您需要一个功能文件、定义文件和一个示例响应 json 文件。
ListItTest.java
@RunWith(Cucumber.class)
@CucumberOptions(
glue = {"com.abcd.cucumber.steps"},
features = {"classpath:features/member/member-document.feature"},
plugin = {"pretty"}
)
public class ListItTest {
}
成员密码.feature
# Change password of member
# Tags : Member's change password
Feature: Change password of member
Scenario: Change password of a registered member
When member enters oldPassword newPassword and confirmPassword
Then member password will be changed
会员密码.json
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"status": {
"type": "boolean"
},
"sessionExpired": {
"type": "boolean"
},
"messages": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"shortMessage": {
"type": "string"
},
"longMessage": {
"type": "string"
}
},
"required": [
"shortMessage",
"longMessage"
]
}
]
}
},
"required": [
"status",
"sessionExpired",
"messages"
]
}
MemberPasswordDef.java
public class MemberPasswordDef {
private LoginModel loginModel = new LoginModel();
private Logger logger = Logger.getLogger(MemberPasswordDef.class);
PasswordChangeParams passwordChangeParams = new PasswordChangeParams();
@When("member enters oldPassword newPassword and confirmPassword")
public void member_enters_oldPassword_newPassword_and_confirmPassword() {
passwordChangeParams.setOldPassword("1234");
passwordChangeParams.setNewPassword("1212");
passwordChangeParams.setConfirmPassword("1212");
loginModel.setUsername("test");
loginModel.setPassword("9999");
}
@Then("member password will be changed")
public void member_password_will_be_changed() {
try {
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(passwordChangeParams);
RestAssured.given()
.header(new Header("content-type", "application/json"))
.auth().preemptive().basic(loginModel.getUsername(), loginModel.getPassword())
.when()
.body(jsonString)
.put(URL)
.then()
.assertThat()
.body(matchesJsonSchemaInClasspath("schemas/members/member-password.json"));
}
catch(Exception e) {
Assert.assertEquals(false, true);
logger.error(e.getMessage(), e);
}
}
}
我对这个问题有点晚了,但我认为这个问题被问了很长时间后,值得一个更清晰的答案,因为现在有很多很好的资源可以开始使用黄瓜。在 10 分钟内开始使用黄瓜的最佳地点是以下链接:
https://cucumber.io/docs/guides/10-minute-tutorial/
如链接中所述,您可以使用 Maven 原型创建示例项目:
mvn archetype:generate \
"-DarchetypeGroupId=io.cucumber" \
"-DarchetypeArtifactId=cucumber-archetype" \
"-DarchetypeVersion=5.6.0" \
"-DgroupId=hellocucumber" \
"-DartifactId=hellocucumber" \
"-Dpackage=hellocucumber" \
"-Dversion=1.0.0-SNAPSHOT" \
"-DinteractiveMode=false"