2016-08-04 8 views
0

私はAPIの自動受諾テストをスピードアップしたいと考えていました。各テストの実行後にデータベースを消去します。これにより、他のテクニックと比較して劇的なパフォーマンス向上が実現しました。インポートされたSpring MVC @Controllerは、Mavenテストやスコープ提供では利用できません

しかし、データベースの内容全体を削除できるエンドポイントでAPIを出荷することは悪い考えです。私がエンドポイントを確保しても、それはまだ悪い考えのようです。

削除エンドポイントの出荷を避けるため、削除エンドポイント付きの@Controllerを独自のMavenモジュールに組み込み、mavenの 'test'スコープを使用してそのmavenモジュールをAPIに組み込みました。 'それがうまくいかないときのスコープ)。残念ながら、私が 'test'または 'provided'スコープを使用している場合、削除ロジックを持つコントローラは見つからないようです。これは、デフォルトスコープ(またはスコープが明示的に設定されていない)でインポートしたときに検出されます。

私には何が欠けていますか?なぜ私は何をしようとしていないのですか?

答えて

0

Springプロファイルを使用できます。 @Profile注釈を使用して、コントローラの注釈:

@Controller 
@Profile("acceptance") 
public class SpecialController { 
    @RequestMapping("/stuff") 
    public void doDangerousStuff() { 
     // ... 
    } 
} 

を今、あなたは財産spring.profiles.activeを使用して、受け入れテストのためのアプリケーションを実行して使用する場合は、このBeanがロードされるべきか否か、あなたがコントロールすることができます。

私はあなたがあなたのアプリケーションを起動していますが、mvn spring-boot:runを使用する場合は、使用できるか見当がつかない:

mvn spring-boot:run -Dspring.profiles.active=acceptance 

あなたは春ブートを使用している場合ので、それにもかかわらず、私は、あなたのユースケースは少し奇妙見つけます-starter-testあなたは既にJUnitテストとアプリケーションからの豆をテスト内で書くことができるので、リポジトリ/ DAOをオートワイヤリングし、APIを介して直接公開するのではなく、データを直接消去することができます。

+0

「あなたはリポジトリ/ DAOをオートワイヤリングし、APIを介して公開する代わりにデータを直接消去できます」という方がはるかに良いオプションです。これらのテストはBDDを呼び出すRESTエンドポイントなので、単純に私のBeanをオートワイヤすることはできませんでした。まだ私がテストやスコープを使用している場合、Beanは見つかりませんでした。 –

関連する問題