Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Rally API,创建测试用例结果-连接关闭异常_Java_Rally - Fatal编程技术网

Java Rally API,创建测试用例结果-连接关闭异常

Java Rally API,创建测试用例结果-连接关闭异常,java,rally,Java,Rally,我正在用java/groovy进行开发,对Rally API还不熟悉,我上周开始使用它。我希望能够使用RESTAPI创建新的测试用例结果。在星期五(我写这篇文章的时候是星期一),我使用下面的示例使它工作起来,使用参数将我想要的数据输入到方法中。我在另一个网站上找到了这个例子 今天,当我运行代码时,我认为我没有做任何更改,我一直得到“ConnectionClosedException:内容长度分隔消息正文的过早结束(预期:1390;接收:1389)” 我再次重写了代码,这次没有改变示例中的任何内容

我正在用java/groovy进行开发,对Rally API还不熟悉,我上周开始使用它。我希望能够使用RESTAPI创建新的测试用例结果。在星期五(我写这篇文章的时候是星期一),我使用下面的示例使它工作起来,使用参数将我想要的数据输入到方法中。我在另一个网站上找到了这个例子

今天,当我运行代码时,我认为我没有做任何更改,我一直得到“ConnectionClosedException:内容长度分隔消息正文的过早结束(预期:1390;接收:1389)”

我再次重写了代码,这次没有改变示例中的任何内容,只是为了尝试让它再次工作,我得到了相同的异常。下面是我正在使用的代码:

public static void createTestCaseResults(){
        // Create and configure a new instance of RallyRestApi
        RallyRestApi restApi = new RallyRestApi(new URI("https://rally1.rallydev.com"),"username@company.com", "Password");
        restApi.setWsapiVersion("1.36");
        restApi.setApplicationName("Add Test Case Result");

        //Query User
        QueryRequest userRequest = new QueryRequest("User");
        userRequest.setFetch(new Fetch("UserName", "Subscription", "DisplayName"));
        userRequest.setQueryFilter(new QueryFilter("UserName", "=", "username@company.com"));
        QueryResponse userQueryResponse = restApi.query(userRequest);
        JsonArray userQueryResults = userQueryResponse.getResults();
        JsonElement userQueryElement = userQueryResults.get(0);
        JsonObject userQueryObject = userQueryElement.getAsJsonObject();
        String userRef = userQueryObject.get("_ref").getAsString();

        // Query for Test Case to which we want to add results
        QueryRequest testCaseRequest = new QueryRequest("TestCase");
        testCaseRequest.setFetch(new Fetch("FormattedID","Name"));
        testCaseRequest.setQueryFilter(new QueryFilter("FormattedID", "=", "TC7562"));
        QueryResponse testCaseQueryResponse = restApi.query(testCaseRequest);
        JsonObject testCaseJsonObject = testCaseQueryResponse.getResults().get(0).getAsJsonObject();
        String testCaseRef = testCaseQueryResponse.getResults().get(0).getAsJsonObject().get("_ref").getAsString();

        try{
            //Add a Test Case Result
            System.out.println("Creating Test Case Result...");
            JsonObject newTestCaseResult = new JsonObject();
            newTestCaseResult.addProperty("Verdict", "Pass");
            newTestCaseResult.addProperty("Date", "2012-06-12T18:00:00.000Z");
            newTestCaseResult.addProperty("Notes", "Automated Selenium Test Runs");
            newTestCaseResult.addProperty("Build", "2012.05.31.0020101");
            newTestCaseResult.addProperty("Tester", userRef);
            newTestCaseResult.addProperty("TestCase", testCaseRef);

            CreateRequest createRequest = new CreateRequest("testcaseresult", newTestCaseResult);
            CreateResponse createResponse = restApi.create(createRequest);

            if(createResponse.wasSuccessful()){
                println(String.format("Created %s", createResponse.getObject().get("_ref").getAsString()));
                //Read Test Case
                String ref = Ref.getRelativeRef(createResponse.getObject().get("_ref").getAsString());
                System.out.println(String.format("\nReading Test Case Result %s...", ref));
                GetRequest getRequest = new GetRequest(ref);
                getRequest.setFetch(new Fetch("Date", "Verdict"));
                GetResponse getResponse = restApi.get(getRequest);
                JsonObject obj = getResponse.getObject();
                println(String.format("Read Test Case Result. Date = %s, Verdict = %s", obj.get("Date").getAsString(), obj.get("Verdict").getAsString()));
            } else {
                String[] createErrors;
                createErrors = createResponse.getErrors();
                System.out.println("Error occurred creating Test Case: ");
                for (int i=0; i<createErrors.length;i++) {
                    System.out.println(createErrors[i]);
                }
            }

        }
        finally{
            restApi.close()
        }
    }
publicstaticvoid createTestCaseResults(){
//创建并配置RallyRestApi的新实例
RallyRestApi restApi=新的RallyRestApi(新URI(“https://rally1.rallydev.com"),"username@company.com“,”密码“);
restApi.setWsapiVersion(“1.36”);
restApi.setApplicationName(“添加测试用例结果”);
//查询用户
QueryRequest userRequest=新的QueryRequest(“用户”);
setFetch(新的Fetch(“用户名”、“订阅”、“显示名”));
setQueryFilter(新的QueryFilter(“用户名”、“=”、”username@company.com"));
QueryResponse userQueryResponse=restApi.query(userRequest);
JsonArray userQueryResults=userQueryResponse.getResults();
JsonElement userquerylement=userQueryResults.get(0);
JsonObject userQueryObject=userQueryElement.getAsJsonObject();
字符串userRef=userQueryObject.get(“_ref”).getAsString();
//查询要向其添加结果的测试用例
QueryRequest testCaseRequest=新的QueryRequest(“TestCase”);
setFetch(新的Fetch(“FormattedID”,“Name”));
setQueryFilter(新的QueryFilter(“FormattedID”,“=”,“TC7562”);
QueryResponse testCaseQueryResponse=restApi.query(testCaseRequest);
JsonObject testCaseJsonObject=testCaseQueryResponse.getResults().get(0.getAsJsonObject();
字符串testCaseRef=testCaseQueryResponse.getResults().get(0.getAsJsonObject().get(“_ref”).getAsString();
试一试{
//添加测试用例结果
System.out.println(“创建测试用例结果…”);
JsonObject newTestCaseResult=新JsonObject();
newTestCaseResult.addProperty(“裁决”、“通过”);
newTestCaseResult.addProperty(“日期”,“2012-06-12T18:00:00.000Z”);
newTestCaseResult.addProperty(“注释”,“自动硒测试运行”);
newTestCaseResult.addProperty(“构建”、“2012.05.31.0020101”);
newTestCaseResult.addProperty(“Tester”,userRef);
newTestCaseResult.addProperty(“TestCase”,testCaseRef);
CreateRequest CreateRequest=新的CreateRequest(“testcaseresult”,newTestCaseResult);
CreateResponse CreateResponse=restApi.create(createRequest);
if(createResponse.wasSuccessful()){
println(String.format(“已创建%s”,createResponse.getObject().get(“\u ref”).getAsString());
//读取测试用例
字符串ref=ref.getRelativeRef(createResponse.getObject().get(“\u ref”).getAsString());
System.out.println(String.format(“\n正在读取测试用例结果%s…”,ref));
GetRequest GetRequest=新的GetRequest(参考);
setFetch(新的Fetch(“日期”、“判决”));
GetResponse GetResponse=restApi.get(getRequest);
JsonObject obj=getResponse.getObject();
println(String.format(“读取测试用例结果。日期=%s,判决=%s”,obj.get(“日期”).getAsString(),obj.get(“判决”).getAsString());
}否则{
字符串[]创建错误;
createErrors=createResponse.getErrors();
System.out.println(“创建测试用例时出错:”);

对于(int i=0;i您今天仍然会这样吗?我刚刚在rally1和我们的演示系统上尝试了您的代码,并且每次都能可靠地工作(只更改了用户名和密码,以及测试用例格式化的id)


作为可能的下一步,我在RallyRestApi.doRequest中设置了一个断点,在这里检查服务器响应代码,并查看有哪些其他信息可用——例如,响应代码、响应的正文和标题。

这很可能是底层Apache HttpComponents库中的一个错误。我刚刚升级到他是最新的4.2.1组件。你介意试试新的1.0.2 jar吗

更新: 该工具包的1.0.4版本已经解决了这一问题:

您的代码看起来不错。我记得在java工具包的初始开发过程中偶尔会看到类似的异常。我将对此进行研究。出于好奇,您使用的是什么OS/JRE?在这段代码中,get(“\u ref”)。toString()必须替换为get(\u ref”)。getAsString()