注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Javaトランスフォームでは、CIチェックの一環としてユニットテストを実行することができます。
Javaトランスフォームは現在、対話型のユニットテストやデバッグをサポートしていません。この機能が必要な場合は、代わりに Python Transform を検討してください。
このページで説明するJavaのユニットテストは、バッチパイプラインにのみ適用され、ストリーミングパイプラインではサポートされていません。
ユニットテスト環境は、Javaトランスフォームのサブプロジェクトに com.palantir.transforms.lang.java-defaults
プラグインを適用することでデフォルトで設定されます。これにより、人気のあるJavaユニットテストライブラリ JUnit、Mockito、AssertJ がサブプロジェクトの testCompile
構成に追加されます。
テストファイルは src/test/java
の下に置くことで、Gradleが自動的にそれらを検出します。環境にプラグインを追加する方法の詳細については、Python Testsの手順を参照してください。
JUnitルールを提供しているので、管理された SparkSession
に簡単にアクセスできます。
テストファイルで、ClassRule
または Rule
のいずれかとして宣言できます。例えば:
Copied!1 2 3 4 5 6 7
// 日本語のコメントを追加します import com.palantir.transforms.lang.java.testing.api.SparkSessionResource; import org.junit.ClassRule; // スパークセッションリソースをクラスルールとして定義 @ClassRule public static SparkSessionResource sparkSession = new SparkSessionResource();
Copied!1 2 3 4 5 6 7 8
// com.palantir.transforms.lang.java.testing.api.SparkSessionResourceをインポートします import com.palantir.transforms.lang.java.testing.api.SparkSessionResource; // org.junit.Ruleをインポートします import org.junit.Rule; // Ruleアノテーションを使用して、テストクラス内のすべてのテストメソッドでSparkSessionResourceを使用できるようにします @Rule public static SparkSessionResource sparkSession = new SparkSessionResource();
それを以下のように参照してください:
Copied!1 2 3 4 5
@Test public void myUnitTest() { // SparkSession インスタンスを取得します SparkSession sparkSession = sparkSession.get(); }
それをClassRule
として宣言すると、同じSparkSession
がテストクラス内のすべてのテストで共有されます。これにより、SparkSession
の再作成にかかる時間を節約することができますが、クラスパスは以前に実行されたテストから継承されます。
それをRule
として宣言すると、各個別のテストに対して新しい分離されたSparkSession
を取得します。
SparkSession
をRule
として宣言すると、1つのクラスでSparkSession
を使用するテストが多い場合、パフォーマンスが大幅に低下する可能性があります。したがって、可能な限りClassRule
を使用することを強くお勧めします。