当前位置: 首页 > 知识库问答 >
问题:

如何将util java类重用到其他空手道项目中?

范瀚昂
2023-03-14
    * def kafkaProducer = read('../js/KafkaProducer.js')
function(kafkaConfiguration){
var Producer = Java.type('x.y.core.producer.Producer');
var producer = new Producer(kafkaConfiguration);
return producer;
}
public class Producer {

private static final Logger LOGGER = LoggerFactory.getLogger(Producer.class);

private static final String KEY = "C636E8E238FD7AF97E2E500F8C6F0F4C";
private KafkaConfiguration kafkaConfiguration;
private ObjectMapper mapper;
private AESEncrypter aesEncrypter;


public Producer(KafkaConfiguration kafkaConfiguration) {
    kafkaConfiguration.getProperties().put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
    kafkaConfiguration.getProperties().put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArraySerializer");
    this.kafkaConfiguration = kafkaConfiguration;
    this.mapper = new ObjectMapper();
    this.aesEncrypter = new AESEncrypter(KEY);
}


public String produceMessage(String payload) {

  // Just notify kafka with payload and return id of payload
}
public class KafkaConfiguration {

private static final Logger LOGGER = LoggerFactory.getLogger(KafkaConfiguration.class);

private Properties properties;

public KafkaConfiguration(String host) {

    try {
        properties = new Properties();
        properties.put(BOOTSTRAP_SERVERS_CONFIG, host);
        properties.put(ConsumerConfig.GROUP_ID_CONFIG, "karate-integration-test");
        properties.put(ConsumerConfig.CLIENT_ID_CONFIG, "offset123");
        properties.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true);
        properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
    } catch (Exception e) {
        LOGGER.error("Fail creating the consumer...", e);
        throw e;
    }
}

public Properties getProperties() {
    return properties;
}

public void setProperties(Properties properties) {
    this.properties = properties;
}
}
@Then("^Notify kafka with payload (-?\\d+)$")
    public void validateResult(String payload) throws Throwable {
        new Producer(kafkaConfiguration).produceMessage(payload);
    }
Then Notify kafka with payload "{example:value}"

共有1个答案

澹台锐
2023-03-14

答案很简单,使用普通的Java/Maven概念。将通用Java代码移动到“main”包(src/main/Java)。现在您所需要做的就是构建一个JAR并将其作为依赖项添加到任何空手道项目中。

最后一个难题是:使用类路径:前缀引用JAR中的任何特性或JS文件。空手道就能把他们捡起来。

编辑:抱歉空手道不支持cucumber或步骤定义。它有一个简单得多的方法。详情请阅读:https://github.com/intuit/karate/issues/398

 类似资料:
  • 问题内容: 我在Swift中写了一堂课。我想在我编写的两个独立的iOS应用程序项目中使用此代码。共享代码和应用程​​序均使用Swift编写。最好的方法是什么? 我试图在Swift中创建框架和库,然后将其作为子项目添加到我的应用中。在两种情况下,我都无法使应用程序看到该模块。我试图将共享模块添加到主应用程序目标的“ Target Dependencies”和“ Link Binary With Li

  • firestore项目的规则如下 之前,我通过firebase函数使用firebase admin sdk来获得对firestore项目的完整控制。 当规则如下所示时,是否可以在客户端对firestore使用auth 但是FirebaseError:请求时权限丢失或不足 请给我一些建议

  • 我使用选择调用手风琴项目,如http://jsfiddle.net/Rnfzz/1/ 但是,当我从选择框中选择一个项目时,其他打开的手风琴项目不会自动隐藏。如何隐藏其他手风琴项目,以便仅显示单击的手风琴项目?。 这是html C-1 Anim pariatur cliche reprehenderit,enim eiusmod high life accusamus terry richardso

  • 我在用空手道0.9。2和格拉德尔。我的项目需要在src/main/java中进行所有空手道测试。因此,我将gradle依赖项配置为“compile”而不是“testCompile”,并修改了sourceset以指向main而不是test。当我使用上述配置运行runner类时,我得到了一条空的测试套件消息。 建筑渐变片段: 此外,我必须从可部署项目jar运行空手道测试。请指出我可以参考的资源来实现同

  • 我95%的自动化框架是在空手道,工作得很好。我们需要检查应用程序日志中显示的中间结果的功能很少(不在Json响应中)。我写了一个外壳脚本,它在从邮递员手动发送请求后验证Linux机器上的应用程序日志。我使用eclipse的JSCH库调用这个脚本。 有没有什么方法可以让我从空手道发送请求,然后调用我的JSCH类进行验证,这样就可以避免手动发送请求的步骤? 谢谢,阿比

  • 我正在从另一个功能文件调用登录功能文件,我在其中传递url、用户名和密码,但它对我不起作用。我没有在这里使用背景键,我也不想要。 在Login.feature我试图传递用户名和密码作为表单数据,即使这些都不起作用。有人能告诉我我在这里犯了什么错误吗? 我用的是最新空手道版本0.9.0