有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过java从Mercury质量中心9读取测试数据

我们使用汞质量中心9进行储存测试和测试结果
我需要从测试计划中读取测试数据,并通过java将测试结果写入测试实验室
我试图在谷歌上找到这个,但我什么也没找到

更新:

我尝试使用qctools4j使用以下代码处理MQC 9:

public void connect() {
try{
    IQcConnection conn = QcConnectionFactory.createConnection("http://qc/qcbin");                           
    conn.connect("login", "password", "DEFAULT","project");                         
    TestClient tc = conn.getTestClient();
    System.out.println("Connection success!!!");
}
catch (QcException e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
}
}

我收到以下异常消息:

*org.qctools4j.exception.QcException: Can't co-create object
    at org.qctools4j.clients.QcConnectionImpl.initConnection(Unknown Source)
    at org.qctools4j.clients.QcConnectionImpl.<init>(Unknown Source)
    at org.qctools4j.QcConnectionFactory.createConnection(Unknown Source)
    at automation_framework1.automation_framework1.QCWorker.connect1(QCWorker.java:38)
    at automation_framework1.automation_framework1.Main.main(Main.java:12)
Caused by: com.jacob.com.ComFailException: Can't co-create object
    at com.jacob.com.Dispatch.createInstanceNative(Native Method)
    at com.jacob.com.Dispatch.<init>(Dispatch.java:99)
    at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58)
    at org.qctools4j.clients.QcConnectionImpl.initConnection(Unknown Source)*

我做错了什么


共 (2) 个答案

  1. # 1 楼答案

    我找到了解决问题的方法。我将groovy scriptom与以下代码一起使用(可能会对某些人有所帮助):

    def tdc;
    public QualityCenterController(){
    static{
    System.load("C:\\WINDOWS\\system32\\OTAClient.dll");
    System.load("D:\\Work\\automation_framework\\libs\\lib\\jacob-1.16-M2-x86.dll");
    }
    
    public void connect(){
        tdc = new ActiveXObject ("TDApiOle80.TDConnection");
        tdc.InitConnectionEx("http://qc/qcbin");
        tdc.Login("username", "password");
        tdc.Connect("DEFAULT","PROJECT");
        System.out.println("login is success");
    }
    
    //ReqFactory Object
    public void getRequirements(){
        def requironmetns = tdc.ReqFactory();
        def listReq = requironmetns.NewList("");
        for (def iterReq : listReq) {
            getRequirement(iterReq);
        }
        println listReq.count();
    }
    
    //Req Object
    public void getRequirement(def itemReq){
        println 'ID: '+itemReq.ID();
        println 'Name:' + itemReq.Name();
        println 'Path:' + itemReq.Path();
        println 'Reviewed:' + itemReq.Reviewed();
    
        println 'Author:' + itemReq.Author();
        println 'Priority: ' + itemReq.Priority();
        println 'Comment: '+removeHtmlTag(itemReq.Comment());
        println 'Type: ' + itemReq.Type();
    
    
    
    }
    public Test getTestsFromTestLab(String path){
    
        Test resultTest = new Test();
        def labFolder = tdc.TestSetTreeManager.NodeByPath(path);
        def tsList = labFolder.FindTestInstances("");
    
        for (def iterable_element : tsList){
    
            Test test = getTestData(iterable_element);
            def steps =  iterable_element.Test().DesignStepFactory();
            TestStep  testStep = getTest(steps);
        }
        return resultTest;
    }
    
    public TestStep getTest(def testData){
        TestStep testStep = new TestStep();
        def listSteps = testData.NewList("");
        for(def item1 : listSteps){
            testStep = getTestStepData(item1);
            showTestStep(testStep);
        }
        return testStep;
    }
    
    private TestStep getTestStepData(def stepData){
        TestStep testStep =  new TestStep();
        testStep.setId(stepData.ID());
        testStep.setName(stepData.StepName());
        testStep.setDescription(removeHtmlTag(stepData.StepDescription()));
        testStep.setExpected(removeHtmlTag(stepData.StepExpectedResult()));
        testStep.setStepOrder(stepData.Order());
        return testStep;
    }
    
    public Test getTestData(def testData){
        Test test = new Test();
        test.setId(Integer.parseInt(testData.Id()));
        test.setName(testData.Name());
        test.setExecStatus(testData.Status());
        showTest(test);
        return test;
    }
    
    private String removeHtmlTag(String html){
        String result = "";
        result = Jsoup.parse(html).text();
        return result;
    }
    
    public void showTestStep(TestStep testStep){
        println testStep.getId();
        println testStep.getName();
        println testStep.getDescription();
        println testStep.getExpected();
        println testStep.getStepOrder();
    }
    public void showTest(Test test){
        println test.getId();
        println test.getName();
        println test.getExecStatus();
    }
    
  2. # 2 楼答案

    我参与了qc9的开发,我不确定是否有javaapi。但是,有一个COM接口或OTA API。您可以使用一些库来帮助从Java调用COM API

    例如:

    1. Jacob它是开源的,{a3}就是一些例子
    2. Nevaobject-它是商业性的,但更稳定

    祝你好运

    编辑:

    刚刚看到qctools4j(它基于Jacob)-从未尝试过