如何为 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 库编写黄瓜验收的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Cucumber 编写 Feature 级别的验收测试?