Reputation: 175
We use Mercury Quality Center 9 for storage tests and test results.
I need to read test data from Test Plan and to write test result into Test Lab via java.
I tried to find about this in google but I have not found anything.
UPDATE:
I tried to use qctools4j for working with MQC 9 with the following code:
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();
}
}
I got the following exception message:
*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)*
What am I doing wrong?
Upvotes: 0
Views: 2800
Reputation: 175
I found how to solve the problem. I used groovy scriptom with the following code (may be it will help somebody):
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();
}
Upvotes: 0
Reputation: 8278
I took part in developping QC 9 and I am not sure there is Java API. However, there is a COM interface or OTA API. You can use some library that helps to call COM API from Java.
For example:
Good luck!
EDIT:
just saw qctools4j (it is based on Jacob) - never tried it.
Upvotes: 1