使用 webdriver API 实现 BDD(JBehave+Webdriver)



我正在尝试通过实现BDD框架来增强我的Web驱动程序脚本。我开始了解JBehave(JBehave+Webdriver),但在继续之前,我担心需要多少java代码实现,因为我主要从事自动化测试。根据我的看法,JBehave分三个步骤工作:

  1. 添加故事文件
  2. 将故事文件实现到 Java 中(我在此步骤中遇到问题)
  3. 实现 Web 驱动程序调用。

所以使用这种方法,如果我有一个用户故事,例如注册到应用程序中,那么:

  • 实现用户故事
  • 在 Java 中
  • 实现 - 在 Java 中实现完整的身份验证逻辑
  • 实施网络驱动程序 - 自动化用户操作

另一个例子:我有一个用户故事,它执行一个特定的工作流程,需要在5-6个页面上做一组操作,然后我需要为此实现/模拟java代码。

这是 JBehave 的工作方式吗?还有没有其他选择。

jbeact 的五步概述:

  1. 写故事(纯文本)
  2. 将步骤映射到 Java 方法 (POJO)
  3. 配置故事(仅一次)
  4. 运行故事(与以下任何一种:Ant,Maven,JUnit,Eclipse,IntelliJ)
  5. 查看报告 (HTML)

您可以访问有关jbehave的详细信息:http://jbehave.org/

您可以访问以下内容以获取教程示例:https://github.com/jbehave/jbehave-tutorial

JBehave 的工作方式如下;

  1. 写一个描述系统某种期望行为的故事。这个故事必须根据JBehave DSL编写。该故事实质上描述了给定/何时/然后流中的一系列步骤。

  2. 在 java 代码中实现给定/何时/然后步骤。这涉及针对 Web 驱动程序 API 编写代码以与受测应用程序进行交互。

  3. 运行故事并分析结果。它要么通过,要么失败。

我目前正在写一篇关于此的相当详细的博客文章,并在完成后使用链接更新此答案。

jbeact 以一种方式工作,不依赖于是否存在 webdriver如果您想"在一页中"获得操作方法,可以查看此处

Java BDD框架 http://java.dzone.com/articles/brief-comparison-bdd - 对我来说,JBehave和Cucumber是最好的选择,因为拥有庞大而活跃的社区

如果您在"纯"Java中实现故事文件时遇到问题,那么您应该尝试Ginkgo4j。 它是RSpec的Java端口,允许您以与RSpec相同的方式进行测试,只是在Java中。

将此依赖项添加到您的 POM:

    <dependency>
        <groupId>com.github.paulcwarren</groupId>
        <artifactId>ginkgo4j</artifactId>
        <version>1.0.9</version>
        <scope>test</scope>
    </dependency>

创建一个指定Ginkgo4jRunner运行器的JUnit测试用例:

@RunWith(Ginkgo4jRunner.class)
@Ginkgo4jConfiguration(threads = 1)
public class MyTest {
  {
    Describe("ClassUnderTest", () -> {
      Context("#Method", () -> {
        BeforeEach(() -> {
          // before test logic          
        }); 
        JustBeforeEach(() -> {
          ClassUnderTest.Method();          
        }); 
        Context("given a context", () -> {
          It("should do something", () -> {
            // assertions
          });
        });
        Context("given a different context", () -> {
          It("should do something else", () -> {
            // assertions
          });
        });
        AfterEach(() -> {
          // after test logic
        });
      });
    }); 
  }
}

最新更新