2017-12-21 31 views
1

PostgreSQLデータベースと単純なCRUDサービス/リポジトリ(すべてのスプリングブートベース)からデータを読み込む簡単なAPIがあります。私は、サービス層での私の作成/更新方法をマークした:Spring @トランザクションのタイムアウトを正しくテストする方法

@Transactional(timeout=5) 
public void create(Entity x){ 
    ... 
    repository.save(x) 
} 

がどのように(方法によって、統合テスト)をテストすることができますが、タイムアウト例外の下の条件がスローされますか?私のリポジトリはCrudRepositoryの拡張です。あなたは、あなたの統合テストでテスト値に設定し、タイムアウト値をparameteriseし、プロファイルを介して提供する必要がありdoTimeout(6000).when(repository).save(...)

+0

トランザクションタイムアウトをテストする必要はありません。それはあなたのシステムではなく、Springシステムの一部です。 – DwB

+0

@DwB私はあなたの意見がありますが、私はこの投稿に記載されているすべての側面に同意します:http://the-music-of-time.blogspot.com.br/2012/10/writing-unit-tests- to-sure-your-html。私は私の方法で記述している契約について考えて、これを削除することはそれを大きく変えるだろう。 – resilva87

答えて

0

よう

何か。これにより、プロダクションプロファイルにプロダクション値を持ち、テストプロファイルに値をテストすることができます。例えば

application-test.yamlというプロファイルにエントリーをしている。そして、"${postgres.config.10:20}"timeout=5を置き換える

postgres.config: 
    timeout: 10 

20は、アプリケーションが特定のプロファイルなしで開始された場合のデフォルト値を指定します。

関連する問題