これを行うこともできますが、それは実際には間違ったアプローチです。一貫して確実にテストを繰り返すことができないため、車輪を再発明し、テストの欠落に備えることになります。
テストは反復可能である必要があり、何かが変更されるたびにテストできる可能な限り多くのテストオプションを常に実行して、バグを導入しないようにする (または以前に修正したバグに戻す) 必要があります新しいオプション、パラメーター、または値を簡単にサポートできます。
( DUnit
Delphi 単体テスト) を使用する必要があります。現在、いくつかのバージョンの Delphi に含まれています (および SourceForge の以前のバージョンで利用可能) 。これにより、テスト プロセスを自動化できます。そのスイートを構成するものと、各テストの結果です。これにより、動作するはずのものと動作しないものをテストし (そして動作しないことを確認し)、一貫してテストを繰り返して、何も見逃さないようにすることができます。また、失敗したテストに関する情報と、失敗した状態を見つける (および修正する) のに役立つ情報も提供します。TreeView
Suites
すでにインクルードされている Delphi のバージョンDUnit
(Delphi 2007 以降で始まるものだと思います) ではFile->New->Other->Unit Tests->Test Project
、シェルの作成に使用します。クラス ベースではないテストの場合は、別の新しいユニットを作成し、テストを手動で設定します。これは、2 つの意味のない関数のテストを含む、最初に使用するシェルです。
unit MyFunctionsTests;
{
Delphi DUnit Test Case Skeleton Unit
}
interface
uses
TestFramework, MyFunctions;
type
// Test methods for MyFunctions unit
// In the real world, you'd create separate test cases,
// one for tests that should pass and one for tests that
// should fail, and run them separately or in succession.
// This is just a simple shell.
TTestMyFunctions = class(TTestCase)
strict private
public
procedure SetUp; override;
procedure TearDown; override;
published
procedure TestFunctionOne;
procedure TestFunctionTwo;
end;
implementation
procedure TTestMyFunctions.Setup;
begin
// Do any necessary initializations, set variables, etc.
end;
procedure TTestMyFunctions.TearDown;
begin
// Free any objects, release any memory, etc. here
end;
procedure TTestMyFunctions.TestFunctionOne;
begin
// FunctionOne takes two integers and adds them, and
// returns the sum
CheckTrue(FunctionOne(1, 1) = 2); // Test success
CheckFalse(FunctionOne(2, 2) = 5); // Test failure
end;
procedure TTestMyFunctions.TestFunctionTwo;
begin
CheckEqualsString('AB', FunctionTwo('A', 'B')); // Success
CheckFalse(FunctionTwo('B', 'A') = 'AB'); // Failure
end;
initialization
// Register any test cases with the test runner
RegisterTest(TTestMyFunctions.Suite);
end.
を使用し、ユニット ( ) と新しいテスト ケース ユニット (上記のシェル内)Project->Add to Project
を追加します。次のようになります。MyFunctions.pas
MyFunctionTests.pas
program MyFunctionUnitTests;
{
Delphi DUnit Test Project
-------------------------
This project contains the DUnit test framework and the GUI/Console test runners.
Add "CONSOLE_TESTRUNNER" to the conditional defines entry in the project options
to use the console test runner. Otherwise the GUI test runner will be used by
default.
}
{$IFDEF CONSOLE_TESTRUNNER}
{$APPTYPE CONSOLE}
{$ENDIF}
uses
DUnitTestRunner,
MyFunctions in '..\MyFunctions.pas',
MyFunctionsTests in 'MyFunctionsTests.pas';
{$R *.RES}
begin
DUnitTestRunner.RunRegisteredTests;
end.
プロジェクトを実行し、表示されるウィンドウで緑色のPlay
ボタン (Delphi IDE の実行ボタンと同様) をクリックするか、F9. ツリービューには、テストの結果 (合格は緑、不合格は赤) が表示されます。テストが失敗した場合、そのテストのエラー情報がウィンドウの下部に表示されます。(できない場合は、View
ウィンドウを使用してエラーを表示します。)