如何使用Java为测试计划中的测试用例添加参数?

时间:2012-03-14 17:07:02

标签: java hp-quality-center qc com4j

我尝试了各种各样的东西并用Google搜索了几个小时,但无法找到解决问题的方法。

我正在通过Com4j使用Quality Center OTA API让我的程序与QC通信。 它工作得很好,但现在我已经陷入了这个问题:

我想使用我的程序在“测试计划”中为测试用例添加新参数。

如果我使用VB,它会以某种方式工作:

Dim supportParamTest As ISupportTestParameters
Set supportParamTest = TDConnection.TestFactory.Item(5)

Set testParamsFactory = supportParamTest.TestParameterFactory
Set parameter = testParamsFactory.AddItem(Null)
parameter.Name = name
parameter.Description = desc
parameter.Post

Set AddTestParameter = parameter

重要的部分是在TestParameterFactory上调用AddItem()。它添加并返回一个参数,然后您可以给出名称和描述。在VB中,A​​ddItem方法被赋予Null作为参数。

首先使用Java看起来很相似:

首先,我建立连接并获取TestFactory(以及测试用例列表)。

QcConnect qc = new QcConnect(server, login, password, domain, project);
ITDConnection qcConnection = qc.getConnection();

ITestFactory qcTestFactory = qcConnection.testFactory().queryInterface(ITestFactory.class);
IList qcTestList = qcTestFactory.newList("");   

qcTestList包含测试计划中的所有测试。

ITest test = qcTestList.item(1);      
ISupportTestParameters testParam = test.queryInterface(ISupportTestParameters.class);
ITestParameterFactory paramFac = testParam.testParameterFactory().queryInterface(ITestParameterFactory.class);

到目前为止没问题。所有“演员阵容”都是成功的。 现在我想在TestParameterFactory上调用addItem-method,就像在VB中一样。

Com4jObject com = paramFac.addItem(null);

这不起作用。 addItem() - 方法始终返回null。我尝试了各种参数,如随机字符串,随机整数,测试用例的ID等。没有任何作用。

如何在Java中正确使用此方法?

或者一般来说:如何使用Java在测试计划中为现有测试用例添加参数?

快速说明:将测试用例添加到测试计划的工作方式与向此测试用例添加参数非常相似。您还可以使用工厂和addItem方法。在VB中,您将null作为参数,但在Java中,您使用String(它被解释为测试的名称)。但正如我所说,这在这里不起作用。

3 个答案:

答案 0 :(得分:2)

我终于找到了答案:

Com4jObject obj = iTestParameterFactory.addItem(new Variant(Variant.Type.VT_NULL));
iTestParameter = obj.queryInterface(ITestParameter.class);
iTestParameter.name("AAB");
iTestParameter.defaultValue("BBB");
iTestParameter.description("CCC");
iTestParameter.post();

问候。

答案 1 :(得分:0)

要传递给AddItem的是DBNull而不是null。 在VB中它是相同的,但在Java和&它不是。

不确定如何使用Com4J公开DBNull。

this网站了解详情。

答案 2 :(得分:0)

//C# code snippet -> You have to use DBNull.Value instead of null        
//Add new parameter and assign values
    TestParameter newParam =(TestParameter)tParamFactory.AddItem(DBNull.Value);
    newParam.Name = "ParamNew";
    newParam.DefaultValue = "DefaultValue";
    newParam.Description = "AnyDesc";
    newParam.Post();