Javaで、AWS S3までファイルをアップロードするアプリケーションを作成しています。ファイルはハードコードされていない引数でアプリケーションに渡されます。テストを作成したいのですが、ファイルが実際にS3にアップロードされていることを確認します。テストはTDDのコードの前に記述されます(実際にはすでにコードを記述していますが、TDDのプラクティスをすべての作業に習慣として取り入れたいと思います)
これをどの程度正確に実行しますか?私が最もよく知っているのはJUnitを使用することです。
助けてくれてありがとう。
実際のアップロードとそれを実行するテストは、ユニットテストではなく、統合テストの一部です。 S3 APIを非常に薄いクラスでラップする場合は、ビジネスクラスの単体テスト用にそのクラスをモックし、統合テスト用に実際の実装を使用します。
決定した場合、businessクラスを直接取得するAmazonS3インターフェイス、ユニットテストではそのクラスをモックする必要があります。
実際の探索的テスト(学習と検証)Amazon s3が機能するかどうか、またどのように機能するかは、別の実験セットアップで実際に行うことです。
P.S. AmazonS3インターフェースをビジネスクラスで直接使用することはお勧めしません。むしろ、「バックエンドストレージ」を変更する場合に簡単に変更できるように、薄いインターフェースでラップすることをお勧めします。
私はJavaプログラマーではありませんが、おそらく モック を調べたいと思うでしょう。 MockService と呼ばれるSoapUIツールがあります。 AWSが提供するような外部サービスのモック。
上記の回答で示唆されているように、より良いアプローチはAWSAPI応答をモックすることです。 APIアクションの錯覚を取得する別の方法は、ドライランモード/パラメーターを使用してAWSSDKまたはAPIを呼び出すことです。ただし、テストの実行中にインターネットアクセスが必要になる場合があります。
LocalStack は、統合テストのために完全に機能するローカルクラウド環境を起動するフレームワークです。
LocalStackは、S3、Kinesis、Lambda、DynamoDBなどを含むAWSクラウドサービスのサブセットを提供します。
質問はずっと前に答えられましたが、私は別のアプローチについてコメントしたいと思います。
さまざまなPythonプロジェクトで使用している このライブラリ 。=のような他の言語で開発している場合でも、非常に便利であることがわかりました。 JavaまたはScalaバックグラウンドサーバーをセットアップして、すべてのAWS呼び出しをモックできるため。
「スタンドアロンサーバーモード」の詳細については、READMEの最後にあります。