黄瓜框架创建

时间:2018-01-18 06:11:21

标签: java selenium automated-tests cucumber bdd

我即将开始一个新的工作,期望建立一个测试框架,以允许使用Cucumber传递新功能。虽然我熟悉自动化和功能文件的创建,但从头开始创建框架将是我以前没有做过的任务。在这里投入深处。

在我们进入BDD以提供新功能之前,我们期望能够将令人兴奋的系统行为写成功能并自动化。在我跑得太远之前,我想确保我正在思考如何开始这项任务。

我在想我从功能文件开始然后我的步骤defs然后编写一些代码来执行这些步骤。关于代码结构,我是否仍然有一个单独的页面包和一个单独的测试类?或者是只有一个包含页面类的包的最佳方法,其中包含我们可以对页面执行的所有操作?

有助于此初始设置结构的所有资源?

4 个答案:

答案 0 :(得分:2)

使用Cucumber不会影响您以任何方式管理代码的方式。无论你拥有和习惯,无论如何都可以。你唯一需要补充的是#34;胶水"代码,它是一种中介类,它将Cucumber步骤转换为实际的类和方法,然后执行它们。

因此,通常您可以从功能文件开始,而不考虑实现。这是至关重要的,因为它可以帮助您将业务逻辑与实现分离,这是首先使用Cucumber的重点。下一步是使用Cucumber运行程序运行功能文件,它会自动建议您应该给哪些名称" glue" class类与步骤匹配的方法。

例如,假设您在要素文件中创建了以下步骤:

I have logged in to the system

因为它尚未实现,如果您尝试运行该场景,Cucumber将抛出异常:

cucumber.api.PendingException: TODO: implement me

但它也会建议步骤实现应如何应用于此功能步骤。所以在这种情况下:

You can implement missing steps with the snippets below:

@Given("^I have logged in to the system$")
public void i_have_logged_in_to_the_system() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

最后一步是实现这些方法,在这里你可以重用任何你想要的实现。

答案 1 :(得分:1)

据我所知,结构应如下所示 -

+---.idea
+---main
|   +---java
|   +---resources
\---test
|   +---java
|   |   \---stepdefs
|   |   |   |---ServiceHooks.java
|   |   |   |---StepDefinitions.java
|   |   |---TestRunner.java
|   \---resources
|       \---features
|           |---LoginProfile.feature
|           |---UpdateProfile.feature
|---pom.xml
|---testng.xml

参考:https://medium.com/agile-vision/cucumber-bdd-part-2-creating-a-sample-java-project-with-cucumber-testng-and-maven-127a1053c180

答案 2 :(得分:1)

如@Eugene S所述 - 使用Cucumber特征文件的目的是描述系统的行为,而不是实现(您随着时间的推移会发现它更容易维护) 。 @Confused kangaroo描述的结构也非常标准(如果你将项目作为Maven项目启动,你将获得相同/相似的结构。注意.idea文件夹是IntelliJ特定的。)

除了这些答案之外,我还强烈推荐" The Cucumber for Java book" (如果你正在使用Java),或者" The Cucumber book" (如果你正在使用Ruby)。这些书描述了如何最好地使用Cucumber和为什么,包括如何设置它以获得最大的好处并使您的测试值得信赖和可维护。 Finall,有很多方法可以与Cucumber社区互动,你可以在Cucumber网站上找到(https://cucumber.io/support - Slack频道是最活跃的。)

答案 3 :(得分:1)

如果你在这里使用java,我已经为Selenium-Cucumber框架创建了一个框架,你可以在它上面构建:

https://github.com/far11ven/Selenium-CucumberJUnitFramework

相关问题