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

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

我该怎么做?

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

【问题讨论】:

    标签: cucumber-java


    【解决方案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 的东西吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多