我试图以编程方式在ALM中调用测试套件。当我执行代码时(当我的机器充当测试运行器时)我在本地机器上运行指定的测试套件没有问题。当我试图指向远程服务器运行所述测试套件时,我遇到了一个问题。此处发布的代码和错误消息:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TDAPIOLELib;
// Connect to ALM
ITDConnection itdc = new TDConnection();
itdc.InitConnectionEx(url);
itdc.ConnectProjectEx(domain, projectName, username, pswd);
if (itdc.ProjectConnected)
{
List<string> testInfo = new List<string>();
string testFolder = "Root\\<Folder>\\<Folder>";
testSetName = "<TestSuite>";
TestSetFactory tsFactory = (TestSetFactory)itdc.TestSetFactory;
TestSetTreeManager tsTreeMgr = (TestSetTreeManager)itdc.TestSetTreeManager;
TestSetFolder tsFolder = (TestSetFolder)tsTreeMgr.get_NodeByPath(testFolder);
List tList = tsFolder.FindTestSets(testSetName, false, null);
TestSet testset = tList[1];
TSScheduler scheduler = testset.StartExecution("<RemoteServerName>"); // Contain server name unless local
// scheduler.RunAllLocally = true; // Included when ran local
scheduler.Run();
}
我在'scheduler'声明行收到的错误消息是“Class not registered(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))”。
我已在本地计算机和我尝试执行的计算机上注册了OTAClient.dll。
任何建议将不胜感激。
答案 0 :(得分:2)
我弄清楚问题是什么。如果这个库上有更多的文档可能会很好。
您需要在执行开始之前设置一些TSScheduler属性。所以这一行:
TSScheduler scheduler = testset.StartExecution("<RemoteServerName>"); // Contain server name unless local
// scheduler.RunAllLocally = true; // Included when ran local
scheduler.Run();
成为这个:
TSScheduler scheduler = testset.StartExecution(""); // Contain server name unless local
scheduler.TdHostName = "<test_runner_name>";
scheduler.LogEnabled = true;
scheduler.Run(testset.ID);
如果您确认已在计算机上安装了所有必需的ALM加载项,那么也是个好主意。特别是“HP Quality Center Connectivity”和“HP Quality Center System Test Remote Agent”加载项。为了确保,我重新安装在我的测试代理上。
希望这有助于将来的其他人。
答案 1 :(得分:2)
我已经在使用
了 TSScheduler scheduler = testSet.StartExecution("");
我们在QC10中有一个可行的解决方案,但最近已升级到QC12。安装位于
的连接允许我们在VS2013 / C#中使用COM对象,连接到QC等但是会因为上面代码中出现的错误而失败。
未注册的类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))
最终我们发现您还需要注册您的客户&#39;通过工具/客户注册:
以管理员身份运行IE,并在该页面上安装组件。
我希望这有助于某人:)