2017-09-12 5 views
0

アップストリームモジュールからのテストデータ/クラスをダウンストリームモジュールに提供したいと思います。これを行う最善の方法は何ですか?マルチモジュールのgradleプロジェクトでテストデータとクラスを提供する方法

のは、私は以下のモジュールがあるとしましょう:

:data-transactions - は、インタフェースTransactionsCacheを持っています。このモジュールはデフォルトで、このキャッシュをSQLiteにバックアップするTransactionDbCacheを提供します。

:ui-transactions - トランザクションをユーザーに表示するには、TransactionsCacheのインスタンスが必要です。このモジュールは:data-transactionsに依存しています。 :ui-transactionsをテストしている間、私は

  • 欲しい

    、私はTransactionsInMemoryCacheようTransactionsCacheの偽の実装を提供します。 :data-transactionsの他のダウンストリームモジュールもTransactionsInMemoryCacheが必要な場合があります。このクラスは、非テストモジュールには含めないでください。私はここでのソリューションはsrcSets、特別に何かあると推測している:data-transactions

と同じモジュールにすなわちこと - TransactionsInMemoryCacheよう

  • これらのテストの依存関係がinternal可視性修飾子kotlin活用することができるはずですtestHelper設定?

    注:これはアンドロイド用ですので、APKを生成する必要があります。フレーバーなしで可能ですか?

  • 答えて

    0

    二つのアプローチ

    1. 他のプロジェクトのテスト依存関係として使用することができ、メインjarファイルと同じプロジェクトのテストjarファイルを作成してあります。このjarファイルはsrc/test/javaの組み合わせになります

    私は、私自身は、としてオプション2を好む(コンパイル)とsrc/test/resources

  • は、他のプロジェクトのテスト依存関係として使用することができ、共通のテストユーティリティのための別のプロジェクトを作成します。私はそれがあなたが瓶(テストユーティリティ、抽象基本クラス、テストリソースなど)に欲しいものを正確に入れてから、あなたが実際のテストを瓶に入れないので、最もクリーンなアプローチだと感じています。

    星雲は、オプション2

  • +0

    の賛成でこのプラグインを非推奨となっていることをオプション1.注nebula-test-jarプラグインは、私はちょうど 'のsrc /偽物/ java'のカスタム設定を定義していることの.jarをオフに構築することができませんでしたを参照してください。 ? しかし、私は、 'main'クラスパスが上流モジュールの' main'に依存する下流モジュールを望んでいます。下流の 'test'クラスパスは上流の' fake'クラスパスに依存しています。ダウンストリームの 'test'コンフィギュレーションは' main'コンフィギュレーションから拡張されています。この 'main'コンフィギュレーションはアップストリーム' main'に依存しますが、ダウンストリーム 'test'はアップストリーム' fake'に依存します。 – ZakTaccardi

    関連する問題