データ統合Java基礎的なトランスフォームユニットテスト

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

ユニットテスト

Javaトランスフォームでは、CIチェックの一環としてユニットテストを実行することができます。

Javaトランスフォームは現在、対話型のユニットテストやデバッグをサポートしていません。この機能が必要な場合は、代わりに Python Transform を検討してください。

このページで説明するJavaのユニットテストは、バッチパイプラインにのみ適用され、ストリーミングパイプラインではサポートされていません。

ユニットテスト環境は、Javaトランスフォームのサブプロジェクトに com.palantir.transforms.lang.java-defaults プラグインを適用することでデフォルトで設定されます。これにより、人気のあるJavaユニットテストライブラリ JUnitMockitoAssertJ がサブプロジェクトの testCompile 構成に追加されます。 テストファイルは src/test/java の下に置くことで、Gradleが自動的にそれらを検出します。環境にプラグインを追加する方法の詳細については、Python Testsの手順を参照してください。

Sparkを使ったテスト

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を取得します。

警告

SparkSessionRuleとして宣言すると、1つのクラスでSparkSessionを使用するテストが多い場合、パフォーマンスが大幅に低下する可能性があります。したがって、可能な限りClassRuleを使用することを強くお勧めします。