1

新しいアプリケーションを使用した一般的なブーストテストと単体テストについて説明しているところですが、アプリケーションの初期化を処理する方法がわかりません(たとえば、構成ファイルの読み込み、データベースへの接続、組み込みのPythonインタープリターの起動など)。 。

この初期化プロセスをテストしたいと思います。また、アプリケーション内の他のほとんどのモジュールでは、初期化が正常に行われたことが必要です。

シャットダウンコードを実行する方法もありがたいです。

どうすればこれを行うことができますか?

4

2 に答える 2

2

あなたがしようとしているのは、単体テストよりも統合テストのようです。言葉遣いを特定することではありませんが、違いがあります。単体テストとは、メソッドを分離してテストすることを意味し、フィクスチャと呼ばれる環境で、1 つのテスト用に作成され、終了してから削除されます。次のケースで同じフィクスチャが必要な場合は、フィクスチャの別のインスタンスが再作成されます。これは、1 つのテストのエラーが後続のテストの結果に影響を与えないように、テストを分離するために行われます。

通常、1 つのテストには 3 つのステップがあります。

  • 配置 - フィクスチャの準備: テストするクラスをインスタンス化します。他のオブジェクトが必要な場合もあります
  • Act - テストするメソッドを呼び出します
  • アサート - 期待を検証する

単体テストは通常​​、ファイルやデータベースなどの外部リソースから離れています。代わりに、テスト対象のクラスの依存関係を満たすためにモック オブジェクトが使用されます。

ただし、アプリケーションの種類によっては、アプリケーション自体からテストを実行することができます。これは「純粋な」単体テストではありませんが、特にコードが単体テストを念頭に置いて書かれていない場合は、単体テストを行うのに十分な「柔軟性」がない可能性があります。

これには、たとえば「-test」パラメーターを使用した特別な実行モードが必要です。これにより、アプリケーションが正常に初期化され、入力をシミュレートし、アサーションを使用してアプリケーションが期待どおりに反応したことを確認するテストが呼び出されます。同様に、シャットダウン コードを呼び出して、データベース接続が閉じられているかどうか (オブジェクトが削除されていないかどうか) をアサーションで確認することもできます。

このアプローチには、単体テストと比較していくつかの欠点があります。構成ファイル (パラメーターによってソフトウェアの動作が異なる場合があります)、データベース (その内容と接続機能) に依存し、テストが分離されていません。 ... 最初の 2 つは、構成のデフォルト値を使用し、テストモードでテスト データベースに接続することで解決できます。

于 2010-01-05T13:47:41.107 に答える
0

を定義していBOOST_TEST_MAINますか? その場合、main独自の関数がなく (そうでなければ初期化コードを配置する場所)、必要に応じて各テストの前に呼び出すことができる init 関数を公開する何らかの形式のシングルトン オブジェクトを使用できます。

于 2010-01-05T08:52:54.447 に答える