1

我尝试了各种方法并在 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 中,AddItem 方法被赋予 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 方法,就像在 VB 中一样。

Com4jObject com = paramFac.addItem(null);

这行不通。addItem() 方法总是返回 null。我尝试了各种参数,如随机字符串、随机整数、测试用例的 ID 等。没有任何效果。

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

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

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

4

3 回答 3

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();

问候。

于 2012-07-05T15:52:56.353 回答
0

您要传递给 AddItem 的是 DBNull 而不是 null。在 VB 中是一样的,但在 Java 和 .NET 中则不同。

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

在此站点上阅读有关此内容的更多信息。

于 2012-03-18T20:08:30.007 回答
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(); 
于 2016-09-21T10:31:11.493 回答