1

HPQC11に新しい要件を投稿するプロトタイプアプリケーションを作成しようとしています。

しっかりした接続を得ることができましたが、空白の要件を追加しようとすると、AccessViolationExceptionが発生します。

TDConnectionClass td = HPQC_Connect(); //Open a connection
ReqFactory myReqFactory = (ReqFactory)td.ReqFactory; //Start up the Requirments Factory.
Req myReq = (Req)myReqFactory.AddItem(DBNull.Value); //Create a new blank requirement (AccessViolationException)
myReq.Name = "New Requirement"; //Populate Name
myReq.TypeId = "1"; // Populate Type: 0=Business, 1=Folder, 2=Functional, 3=Group, 4=Testing
myReq.ParentId = 0; // Populate Parent ID
myReq.Post(); // Submit

何か案は?私はC#とコーディング全般にかなり慣れていないので、何も知らないと仮定するのがおそらく最善です。

4

2 に答える 2

2

isseを介していくつかの重要な作業を行った後、次のコードが正しく機能します。

private void HPQC_Req_Create_Click()
    {
        TDConnection td = null;
        try
        {
            td = new TDConnection();
            td.InitConnectionEx("server");
            td.Login(HPQCUIDTextbox.Text.ToString(), HPQCPassTextbox.Text.ToString());
            Console.WriteLine(HPQCPassTextbox.Text.ToString());
            td.Connect("DEFAULT", "Test_Automation_Playground");

            bool check = td.LoggedIn;
            if (check == true)
            {
                Console.WriteLine("Connected.");
                HPQCStatus.Text = "Connected.";
            }

            ReqFactory myReqFactory = (ReqFactory)td.ReqFactory;
            Req myReq = (Req)myReqFactory.AddItem(-1); //Error Here
            myReq.Name = "New Requirement 1";
            myReq.TypeId = "1"; // 0=Business, 1=Folder, 2=Functional, 3=group, 4=testing 
            myReq.ParentId = 0;
            myReq.Post();

            Console.WriteLine("Requirement Created.");
            HPQCStatus.Text = "Requirement Created.";

            try
            {
                td.Logout();
                td.Disconnect();
                td = null;
            }
            catch
            { }
        }
        catch (Exception ex)
        {
            Console.WriteLine("[Error] " + ex);
            try
            {
                td.Logout();
                td.Disconnect();
                td = null;
            }
            catch
            { }
        }

このコードを機能させるには、サーバーをQC 11パッチ9(ビルド11.0.0.7274)にパッチする必要があります。以前のバージョンではエラーが発生します。特に、質問のエラーが発生します。

于 2012-08-08T17:14:55.977 に答える
0

ALM の要件は階層的です。要件を作成するときは、既存の要件の下に作成する必要があります。

あなたがしたいことは、ルート要件を把握することです。その ID は 0 または 1 である必要があり、ALM UI で確認できます。

次に、そのルート要件のプロパティから ReqFactory のインスタンスを取得します。次に、要件をそのファクトリに追加します。

また、MTA スレッドではなく STA で作業していることを確認してください。

于 2012-08-04T17:20:17.893 に答える