java - 连接到 HP 质量中心 alm(版本 12.50)
问题描述
我们公司需要连接到 HP alm 并使用 Java 获得不同的测试和缺陷。我在 64 位机器(jdk 1.8)上工作。我在网上尝试了许多解决方案,这是我在每次测试中遇到的不同测试和错误。
第一种方法:使用 comp4j 连接
这是我的Java代码:
String url = "https://*****.saas.hpe.com/qcbin/";
String domain = "DEFAULT_827852153";
String project = "827852153_DEMO";
String username = "****";
String password = "*****";
try {
ITDConnection itd = ClassFactory.createTDConnection();
itd.initConnectionEx(url);
System.out.println("Test1:" + itd.connected());
itd.connectProjectEx(domain, project, username, password);
} catch (Exception e) {
e.printStackTrace();
}
我得到的例外:
com4j.ExecutionException: com4j.ComException: 80040154 CoCreateInstance failed : Classe non enregistrée : .\com4j.cpp:153
at com4j.ComThread.execute(ComThread.java:236)
at com4j.Task.execute(Task.java:26)
at com4j.COM4J.createInstance(COM4J.java:99)
at com4j.COM4J.createInstance(COM4J.java:74)
at com.mercury.qualitycenter.otaclient.ClassFactory.createTDConnection(Unknown Source)
at infrastructure.Test.main(Test.java:24)
第二种方法:使用rest api连接
我一步一步地按照本教程 https://www.consulting-bolte.de/index.php/tech-blog/hp-alm/hp-alm-rest-api/115-connect-to-hp-alm-via -java-using-rest-api 本教程使用 ALM REST API 官方文档(https://admhelp.microfocus.com/alm/en/12.60/api_refs/REST_TECH_PREVIEW/ALM_REST_API_TP.html#REST_API_Tech_Preview/CodeSamples/infrastructure/RestConnector.htm %3FTocPath%3DExample%2520Application%7Cinfrastructure%7C_____10)。
无论我传递给登录方法的用户名或密码是什么,它都会返回状态码 200。因此,代码中不考虑登录名和密码。但是当我尝试使用此代码读取缺陷时:
AlmConnector alm = new AlmConnector();
RestConnector conn = RestConnector.getInstance();
conn.init(new HashMap<String, String>(), Constants.HOST,
Constants.DOMAIN, Constants.PROJECT);
alm.login("***", "***");
conn.getQCSession();
String defectUrl = conn.buildEntityCollectionUrl("defect");
defectUrl += "/89";
Map<String, String> requestHeaders = new HashMap<String, String>();
requestHeaders.put("Accept", "application/xml");
conn.first = false;
Response res = conn.httpGet(defectUrl, null, requestHeaders);
String postedEntityReturnedXml = res.toString();
Entity entity = EntityMarshallingUtils.marshal(Entity.class,
postedEntityReturnedXml);
List<Field> fields = entity.getFields().getField();
for (Field field : fields) {
System.out.println(field.getName() + " : "
+ field.getValue().size());
}
alm.logout();
alm = null;
我得到这个例外:
Exception in thread "main" javax.xml.bind.UnmarshalException: élément inattendu (URI : "", local : "html"). Les éléments attendus sont <{}Entity>
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:681)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:247)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:242)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:109)
at
............
我没有更改 api 基础结构代码中的任何内容。
我只想编写一个简单的 Java 代码,它允许我连接到 HP alm 并读取缺陷。
解决方案
对于 COM4J 案例:您有三个问题:
- 您必须使用 32 位版本的 Java,因为 OTAClient.dll 是 32 位的,不幸的是没有 64 位版本
- 您需要从 ( https://yoursever/qcbin/PlugIns/TDConnectivity/TDConnect.exe ) 安装 ALM Connectivity Add-in 或注册 ALM Client
- ALM 服务器 URL 必须以 结尾
qcbin
,而您有:(String url = "https://*****.saas.hpe.com/qcbin/";
以 结尾/
)
对于 REST API 案例:看起来您得到的是 HTML 而不是 XML,这在发生错误并且返回代码不是 200 时是可能的,然后 ALM 可能会返回带有一些错误消息的 HTML。我将首先检查 HTTP 返回代码并检查其中的内容postedEntityReturnedXml
作为旁注 - 我们正在开发一种用于与 ALM 集成的产品,称为 Bumblebee ( https://www.agiletestware.com/bumblebee ),所以也许您可以看看它。
推荐阅读
- javascript - 如何从长字符串值中获取前 25 个字符,并在 MVC 的工具提示中显示完整值?
- java - 当页面中不存在 Web 元素时如何继续执行脚本
- python - 从文件管理器运行 python 文件
- python - 为矩阵生成线性独立列
- vb.net - 在 VB.NET 中使用 Microsoft.Office.Interop.PowerPoint
- deno - 如何解决 Deno 错误:未捕获的 PermissionDenied
- frontend - 如何在前端正确转换 BigNumber 以避免大小写浮动和指数错误?
- php - WordPress按类别自定义帖子分页
- android - 来自 Android 10 的 WebService 调用
- sql - 以给定月份的日期为中心