java - 更新 Cucumber 功能并在 Jira 中的 Xray 上测试执行结果

标签 java intellij-idea cucumber jira-rest-api jira-xray

我正在尝试使用 Cucumber 和 Java 设置一个自动化框架。我使用 Itellij IDEA 作为我的 IDE。到目前为止,我能够自动化测试用例。我阅读了 Xray 文档并意识到我应该使用 REST API 来更新 Xray 上的功能文件。

我使用过 Cucumber 和 C#,在 Visual Studio 上自动化了我的测试用例,并使用 Hooks 更新了 TFS 上的功能和执行状态。截至目前,我希望通过 Xray 使用 Java 实现相同的功能。

我做了一些研究,意识到我应该在用 Cucumber 编写的 Xray 上创建一个测试用例,然后将其导出以在 Intellij 上自动化,或者自动化测试用例并使用 Jenkins 在 Xray 上更新它们。

是否有解决方法或教程可供我遵循,以在 Intellij 上使用 Java 和 Cucumber 更新 Xray 上的功能?

最佳答案

对于那些遇到与我相同问题的人,这是我能够将 cucumber 特征导出到 Xray 的方法。您只需发送 Cucumber 功能文件的路径和 url,如下所示 - https://jira.yourdomain.com/rest/raven/1.0/import/feature其他参数都很好理解。

public static void importFeatureFilesToJira(String filePath, String resultTypeUrlValue){
    String jiraUrl = config.getJiraLoginValue();
    log.info(String.format("Starting upload of Cucumber features to XRAY on Jira project: %s\n Using Jira user: %s ", config.getJiraProjectValue(), config.getJiraLoginValue()));
    log.info(String.format("Path to Report: %s", filePath));
    String authentication = config.getJiraLoginValue() + ':' + config.getJiraPassword();
    BASE64Encoder encoder = new BASE64Encoder();
    String encoded = null;
    try {
        encoded = encoder.encode((authentication).getBytes("UTF-8"));
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    Client client = ClientBuilder.newBuilder()
            .register(MultiPartFeature.class).property(HttpHeaders.AUTHORIZATION, encoded).build();

    //Import type is dynamic below
    StringBuffer url = new StringBuffer(resultTypeUrlValue);
    url.append("?projectKey=").append(config.getJiraProjectValue());
    WebTarget webTarget = client.target(url.toString());
    log.info(String.format("URL of the XRAY API: %s", url.toString()));
    MultiPart multiPart = new MultiPart();
    multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE);
    FileDataBodyPart fileDataBodyPart = new FileDataBodyPart("file",
            new File(filePath),
            MediaType.APPLICATION_OCTET_STREAM_TYPE);
    multiPart.bodyPart(fileDataBodyPart);

    Response response = webTarget.request(
            MediaType.MULTIPART_FORM_DATA)
            .accept(MediaType.APPLICATION_JSON).
                    header(HttpHeaders.AUTHORIZATION, "Basic " + encoded).post(
                    Entity.entity(multiPart, multiPart.getMediaType()));
    log.info(response.getStatus() + " "
            + response.getStatusInfo() + " " + response);
    int responseBody = response.getStatus();
    String responseBodySting = response.toString();
    try{
        if(responseBody==200 && responseBodySting.contains("200")){
            log.info("Cucumber features were uploaded successfully");
        }
    }catch (Exception e){
        log.info("There was an error uploading the Cucumber feature file");
    }
    log.info("End of XRAY file upload publication");
}

关于java - 更新 Cucumber 功能并在 Jira 中的 Xray 上测试执行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57711034/

相关文章:

java - 在java中设置文件的附加信息

java - 使用命令提示符在 Windows 中设置 JAVA_OPTS

jsf - IntelliJ 检查以查找没有 'id' 属性的标签

java - 我无法在 Intellij IDEA GUI 设计器上调整元素大小或移动元素

javascript - 在 Protractor cucumber 执行之前显示为通过的所有步骤

java - Java Cucumber cli (cucumber.api.cli.Main) 的 --glue 选项的语法

java - 将 IP 地址存储在 UserDetails 实例中

intellij-idea - Play 框架教程 : Cannot resolve symbol 'routes'

selenium - 如何从 java 代码而不是 JUnit Runner 运行 Cucumber 功能文件

java - Java 中参数数量可变的构造函数