如何为 Java 库编写黄瓜验收

Posted

技术标签:

【中文标题】如何为 Java 库编写黄瓜验收【英文标题】:How to write cucumber acceptance for Java Library 【发布时间】:2021-12-16 19:51:55 【问题描述】:

我是 Cucumber 的新手,想用它编写验收测试。 这里重要的是,我在这里开发库,所以我没有任何 http 端点或任何接口。 该库具有 java 方法,并且这些方法将被客户端进一步使用。 我想先写图书馆的接受书。 以下是将被客户端使用并希望为此编写 ac 的服务。

我该怎么做?

public class HelloWorld
   public String helloWorld()
      return "Hello World";
   

【问题讨论】:

【参考方案1】:

我不认为 Cucumber 是编写这样的测试的好工具,因为 Cucumber 是一种集成了较少技术人员和较多技术人员的工具。最好使用纯 Java 来满足您的需要。

但是,如果您想了解一些理论,可以从编写小黄瓜脚本开始:

Feature: Lib testing

  Scenario: Test HelloWorld
    Given an object of click.webelement.cucumber.lib.HelloWorld class
    And calling helloWorld method
    Then method returns: Hello World

那么你需要有步骤定义:

public class StepDefs 

    @Inject
    ObjMethContainer container;

    @Given("an object of  class")
    public void given(String clazz) throws Exception 
        container.o = Class
                .forName(clazz)
                .getConstructor()
                .newInstance(new Object[]);
    

    @When("calling  method")
    public void when(String method) throws Exception 
        container.m = container.o.getClass().getDeclaredMethod(method);
    

    @Then("method returns: ")
    public void then(String val) throws Exception 
        assert val.equals(container.m.invoke(container.o));
    


注意 - 要在步骤之间共享状态,您需要应用一些 DI(在我的示例中,我使用 Guice)。其中ObjMethContainer 很简单:

@Scenarioscoped
public class ObjMethContainer 

    public Object o;
    public Method m;


在我的示例中,我将例外情况概括为 Exception 以节省空间。

【讨论】:

我认为它看起来不错,但看起来很时髦。你能推荐一些关于 groovy 的东西吗?

以上是关于如何为 Java 库编写黄瓜验收的主要内容,如果未能解决你的问题,请参考以下文章

您如何为 webgl 应用程序创建验收测试?

如何使用 Cucumber 编写 Feature 级别的验收测试?

REST API 的验收测试 - 我应该处理所有情况吗?

.NET 中用于编写验收测试的最新维护最多的框架是啥? [关闭]

如何编写验收测试

程序员使用啥技术来编写可维护的集成/功能/验收测试?