0

現在、テスト手順を作成して文字列を渡そうとしています。そして、関数は文字列が同等かどうかをチェックします。問題は、テストを実行すると、プロシージャ内で渡す文字列で EAccessViolation のアクセス違反エラーが発生することです。これがメモリ宣言の問題であることは理解していますが、修正方法がわかりません。

これが私のコードです:

宣言する

TestTForm1 = class(TTestCase)
strict private
    FForm1: TForm1;
public
    procedure SetUp; override;
    procedure TearDown; override;
published
    procedure TestCompareListBoxToFile(Method : String);
end;

電話

TestCompareListBoxToFile('Save');

手順

procedure TestTForm1.TestCompareListBoxToFile(Method : String);  
begin
    Check('Save' = Method,'they dont match');
end;

私はデルフィに慣れていないので、不足しているものがあれば教えてください。具体的に回答してください。ありがとうございました。

4

1 に答える 1

3

そのコードは、単体テスト ランナーによって呼び出されます。RTTI を使用して、名前が で始まる公開されたメソッドを検索します'Test'。一見すると、これは DUnit テスト ケースのように見えます。

ランナーは、パラメーターを受け入れないプロシージャーを予期し、メソッドをそのように呼び出します。一方、パラメーターを必要とするメソッドを提供します。指定されていないパラメーター。したがって、実行時エラー。

さて、コードのどこかで、次のようにメソッドを呼び出していると言っています。

TestCompareListBoxToFile('Save');

しかし、それはテストが呼び出される方法ではありません。テストは、RTTI を使用してそうするランナーによって呼び出されます。関数も呼び出そうとすると、それは間違っています。

次のようにメソッドを宣言する必要があります。

procedure TestCompareListBoxToFile;

おそらく、単体テスト フレームワークのドキュメントと例に戻って、パラメーターを受け入れることができるようにテスト ケースを設計する方法を学ぶ必要があります。実際、それを行う前に、基本に戻って、ランナーがテストを検出して実行する方法を完全に理解していることを確認することをお勧めします。

于 2015-04-07T17:21:47.350 に答える