1

全部,

我正在使用 com4j 来操作 Quality Center,并且可以成功地在两者中创建测试计划和实验室、嵌套文件夹和实际项目。

我现在正在尝试将设计步骤添加到测试中,例如:

ITestFactory iTestFactory = sNode.testFactory().queryInterface(ITestFactory.class);
Com4jObject oTest = iTestFactory.addItem(name);
ITest iTest = oTest.queryInterface(ITest.class);
iTest.field("TS_DESCRIPTION", description);
iTest.field("TS_STATUS", "Design");
iTest.field("TS_DEV_COMMENTS", comments);
iTest.post();

这一切都很好,然后我尝试这样做:

IBaseFactory iFactory = iTest.designStepFactory().queryInterface(IBaseFactory.class);

IStep iStep = iFactory.addItem(1).queryInterface(IStep.class); // ends up null

iStep.field("ST_DESCRIPTION", "Step desc 1");
iStep.field("ST_EXPECTED", "Expected 1");
iStep.post();

但 iStep 总是以 null 结束。没有 IDesignStepFactory 接口,因此我试图在 queryInterface 调用中使用基础工厂。

检查 QC 帮助文件和 otaclient.dll 似乎表明没有 IDesignStepFactory 接口之类的东西,并且在(某些)VB 示例中使用了基本工厂,因此我在上面的尝试...

这是工厂方法可用的几个地方之一,但似乎没有显式接口,例如:

ITestSet ts; ts.tsTestFactory() // no ITSTestFActory interface exists...

感激地收到任何指点,

西蒙

4

1 回答 1

3

通常, IBaseFactory.addItem 应该接收相当于 DBNull 的参数,而不是其他任何参数,在您发布的代码中它是“1”。除非在相关实体的文档中明确指定它可以接受的其他值的集合及其用途。

在设计步骤的情况下,我猜它应该是 DBNull。

于 2012-05-19T09:11:56.100 回答