所有
我正在使用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...
感激地收到任何指示,
西蒙
答案 0 :(得分:3)
作为规则,IBaseFactory.addItem应该接收相当于DBNull作为它的参数,而不是其他任何东西,在你发布的代码中它是“1”。 除非在相关实体的文档中明确指出它可以接受的其他值的集合及其目的。
在设计步骤的情况下,我认为它应该是DBNull。