あなたがしようとしているのは、単体テストよりも統合テストのようです。言葉遣いを特定することではありませんが、違いがあります。単体テストとは、メソッドを分離してテストすることを意味し、フィクスチャと呼ばれる環境で、1 つのテスト用に作成され、終了してから削除されます。次のケースで同じフィクスチャが必要な場合は、フィクスチャの別のインスタンスが再作成されます。これは、1 つのテストのエラーが後続のテストの結果に影響を与えないように、テストを分離するために行われます。
通常、1 つのテストには 3 つのステップがあります。
- 配置 - フィクスチャの準備: テストするクラスをインスタンス化します。他のオブジェクトが必要な場合もあります
- Act - テストするメソッドを呼び出します
- アサート - 期待を検証する
単体テストは通常、ファイルやデータベースなどの外部リソースから離れています。代わりに、テスト対象のクラスの依存関係を満たすためにモック オブジェクトが使用されます。
ただし、アプリケーションの種類によっては、アプリケーション自体からテストを実行することができます。これは「純粋な」単体テストではありませんが、特にコードが単体テストを念頭に置いて書かれていない場合は、単体テストを行うのに十分な「柔軟性」がない可能性があります。
これには、たとえば「-test」パラメーターを使用した特別な実行モードが必要です。これにより、アプリケーションが正常に初期化され、入力をシミュレートし、アサーションを使用してアプリケーションが期待どおりに反応したことを確認するテストが呼び出されます。同様に、シャットダウン コードを呼び出して、データベース接続が閉じられているかどうか (オブジェクトが削除されていないかどうか) をアサーションで確認することもできます。
このアプローチには、単体テストと比較していくつかの欠点があります。構成ファイル (パラメーターによってソフトウェアの動作が異なる場合があります)、データベース (その内容と接続機能) に依存し、テストが分離されていません。 ... 最初の 2 つは、構成のデフォルト値を使用し、テストモードでテスト データベースに接続することで解決できます。