Статистика скриптов Quality Center V11 с использованием Java и COM4J

Я пытаюсь получить доступ к сведениям о тестовом сценарии ALM V11 (QC), таким как Passed/No Run для конкретного проекта с использованием Java, но я получаю null. Может кто-нибудь, пожалуйста, помогите мне в этом?

Ошибка, которую я получаю:

java.lang.NullPointerException
at com.testpack.HPTest2.main(HPTest2.java:53)

Код, который я использую для подключения

        ITDConnection itd=ClassFactory.createTDConnection();
        System.out.println("Test1.1:"+ itd.connected());
        itd.initConnectionEx(url);
        System.out.println("Test1:"+ itd.connected());
        itd.connectProjectEx(domain,project,username,password);


        ITestFactory testFactory;
        //ITSTest2 testFactory;
        ITDFilter2 filterF;
        IList executinList;

        testFactory=(itd.testFactory()).queryInterface(ITestFactory.class);
        //testFactory=(ITestFactory)itd.testFactory().queryInterface(ITestFactory.class);
        filterF=testFactory.fields().queryInterface(ITDFilter2.class);
        String query="\"Passed\"";
        filterF.filter("TC_STATUS",query);
        executinList=filterF.newList();

Я пробовал это, сравнивая VBScript, который у меня есть

Set tdc = CreateObject("tdapiole80.tdconnection")
tdc.InitConnection serverName, domainName
tdc.ConnectProject projectName, projUserName, projPassword

'Get the test factory filter
Set TestSetFact = tdc.TSTestFactory
'TestSetFact.AddItem()
Set TestSetFilter = TestSetFact.Filter
stemp = ApplicationName
appsplit = Split(ApplicationName, "or")

irowtemp = 18
'----------------------------------------------------

'--------------------------------
For iLoop = 0 To UBound(appsplit)
    TestSetFilter.Filter("TS_USER_06") = appsplit(iLoop)

    If initiativeName <> "" Then
        TestSetFilter.Filter("TS_USER_04") = initiativeName
    End If
    TestSetFilter.Filter("TC_STATUS") = "Passed"


    Sheet1.Cells(irowtemp, 2).Value = Trim(appsplit(iLoop))

person VBJ    schedule 27.03.2013    source источник


Ответы (1)


Метод Com4jObject.queryInterface() возвращает null, если обернутый COM-объект не относится к этому типу.

Вероятно, это просто автозаполнение, которое испортило ваш код, но вы должны использовать

filterF=testFactory.filter().queryInterface(ITDFilter2.class);

Чтобы получить фильтр вместо fields().

person mattes    schedule 23.04.2013