Index: [Article Count Order] [Thread]

Date:  Sat, 09 Mar 2002 22:38:48 +0900
From:  NAKAGUCHI Takao <takao-n@....jp>
Subject:  [XP-jp:03294] Re: DUnit を C++Builder5 	で使う。
To:  extremeprogramming-jp@....jp
Message-Id:  <3C8A1068.3C18FB74@....jp>
References:  <3C8A0C35.3307E347@....jp>
X-Mail-Count: 03294

中口です。

# C++Builder ML の方にも送っていますので、C++Builder 固有の話は
# そちらにお願いします。


ごめんなさい、コンパイルエラーがあるものを送ってしまいました。

まずは修正。
1. Unit1.cpp の TestCaseSample::TestMethod は次が正しいです。
        ShortString s = "";
        CheckEquals(0, 3, s);

2. 同じくテストの登録部分
                RegisterTest(TTestCase::Suite(__classid(TestCaseSample)));


で、1 のコードを見て感じると思いますが、CheckEquals メソッドの第3引数は、
ShortString で与えなければならず、かつ省略できません(Delphi ではできる)。
これではめんどいので、僕は TestFramework.pas で指定してある、
{$LONGSTRINGS OFF}
を、
{$LONGSTRINGS ON}
にして使っています。この際、GUITestRunner::Status メソッドでコンパイルエラー
が出ますが、
    procedure Status(test :ITest; const Msg :ShortString);
を、
    procedure Status(test :ITest; const Msg :string);
に変更すれば OK です。

この修正を行うと、
        CheckEquals(0, 3, "");

と書くことができるようになります。

ただこの修正({$LONGSTRINGS ON})を行うと、DLL を使うとき(先ほどのメール、
1の利用方法)に問題が出るような記述が TestFramework.pas にあります。


NAKAGUCHI Takao
takao-n@....jp