Java テスト

互換性

サポートされているテストフレームワーク:

  • JUnit >= 4.10 および >= 5.3
    • Spock Framework や Cucumber-Junit などの JUnit に基づくテストフレームワークも含まれます
  • TestNG >= 6.4

前提条件

Datadog Agent をインストールして、テストデータを収集します

Java トレーサーのインストール

ルートの pom.xml に新しい Maven プロファイルを追加し、Datadog Java トレーサーの依存関係と javaagent arg のプロパティを構成します。その際に、$VERSIONMaven リポジトリからアクセス可能なトレーサーの最新のバージョンで置き換えます (先行する v なし): Maven Central

pom.xml

<profile>
  <id>dd-civisibility</id>
  <activation>
    <activeByDefault>false</activeByDefault>
  </activation>
  <properties>
    <dd.java.agent.arg>-javaagent:${settings.localRepository}/com/datadoghq/dd-java-agent/$VERSION/dd-java-agent-$VERSION.jar -Ddd.service=my-java-app -Ddd.prioritization.type=ENSURE_TRACE -Ddd.jmxfetch.enabled=false -Ddd.integrations.enabled=false -Ddd.integration.junit.enabled=true -Ddd.integration.testng.enabled=true</dd.java.agent.arg>
  </properties>
  <dependencies>
    <dependency>
        <groupId>com.datadoghq</groupId>
        <artifactId>dd-java-agent</artifactId>
        <version>$VERSION</version>
        <scope>provided</scope>
    </dependency>
  </dependencies>
</profile>

ddTracerAgent エントリを configurations タスクブロックに追加し、Datadog Java トレーサーの依存関係を追加します。その際に、$VERSIONMaven リポジトリで利用可能なトレーサーの最新のバージョンで置き換えます (先行する v なし): Maven Central

build.gradle

configurations {
    ddTracerAgent
}
dependencies {
    ddTracerAgent "com.datadoghq:dd-java-agent:$VERSION"
}

テストのインスツルメンテーション

Maven Surefire プラグインまたは Maven Failsafe プラグイン (または両方を使用する場合は両方) を構成して、Datadog Java Agent を使用し、テスト対象のサービスまたはライブラリの名前を -Ddd.service プロパティで指定します。

pom.xml

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <argLine>${dd.java.agent.arg}</argLine>
  </configuration>
</plugin>

pom.xml

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-failsafe-plugin</artifactId>
  <configuration>
     <argLine>${dd.java.agent.arg}</argLine>
  </configuration>
  <executions>
      <execution>
        <goals>
           <goal>integration-test</goal>
           <goal>verify</goal>
        </goals>
      </execution>
  </executions>
</plugin>

DD_ENV 環境変数でテストを実行する環境 (たとえば、開発者ワークステーションでテストを実行する場合は local、CI プロバイダーでテストを実行する場合は ci) を指定して、通常どおりにテストを実行します。例:

DD_ENV=ci mvn clean verify -Pdd-civisibility

configurations.ddTracerAgent プロパティに基づいて Datadog Java トレーサーをターゲットとする -javaagent 引数を jvmArgs 属性に追加し、-Ddd.service プロパティでテスト対象のサービスまたはライブラリの名前を指定して、test Gradle タスクを構成します。

build.gradle

test {
  if(project.hasProperty("dd-civisibility")) {
    jvmArgs = ["-javaagent:${configurations.ddTracerAgent.asPath}", "-Ddd.service=my-java-app", "-Ddd.prioritization.type=ENSURE_TRACE", "-Ddd.jmxfetch.enabled=false", "-Ddd.integrations.enabled=false", "-Ddd.integration.junit.enabled=true", "-Ddd.integration.testng.enabled=true"]
  }
}

DD_ENV 環境変数でテストを実行する環境 (たとえば、開発者ワークステーションでテストを実行する場合は local、CI プロバイダーでテストを実行する場合は ci) を指定して、通常どおりにテストを実行します。例:

DD_ENV=ci ./gradlew cleanTest test -Pdd-civisibility --rerun-tasks

注: Gradle でのビルドはプログラムを通じてカスタマイズできるため、これらのステップを特定のビルドコンフィギュレーションに適応させなければならない場合があります。

コンフィギュレーション設定

次のシステムプロパティはコンフィギュレーションのオプションを設定するもので、環境変数と同等の値を持ちます。両方に同じキータイプが設定されている場合は、システムプロパティコンフィギュレーションが優先されます。 システムプロパティは、JVM フラグとして設定できます。

dd.service
テスト中のサービスまたはライブラリの名前。
環境変数: DD_SERVICE
デフォルト: unnamed-java-app
: my-java-app
dd.env
テストが実行されている環境の名前。
環境変数: DD_ENV
デフォルト: none
: localci
dd.trace.agent.url
http://hostname:port の形式のトレース収集用の Datadog Agent URL。
環境変数: DD_TRACE_AGENT_URL
デフォルト: http://localhost:8126

他のすべての Datadog トレーサーコンフィギュレーションオプションも使用できます。

重要: インテグレーションテストを行う際に、より多くのインテグレーションを有効化したい場合があるかもしれません。特殊なインテグレーションを有効化するには、Datadog Tracer Compatibility テーブルを使用してインテグレーションテスト用のカスタム設定を作成してください。

たとえば、OkHttp3 クライアントリクエストのインテグレーションを有効化する場合は、設定に -Ddd.integration.okhttp-3.enabled=true を追加します。

その他の参考資料