Tests Java

À l'heure actuelle, la solution CI Visibility n'est pas disponible pour le site que vous avez sélectionné ().

Compatibilité

Frameworks de test pris en charge :

  • JUnit 4.10+ et 5.3+
    • Comprend également tous les frameworks de test basés sur JUnit, tels que Spock Framework et Cucumber-Junit
  • TestNG 6.4+

Prérequis

Installez l’Agent Datadog pour recueillir des données de test.

Installer le traceur Java

Installez et activez le traceur Java v0.91.0 ou une version ultérieure.

Ajoutez un nouveau profil Maven dans votre pom.xml racine en configurant la dépendance du traceur Java Datadog et la propriété de l’argument javaagent. Remplacez également $VERSION par la dernière version du traceur accessible dans le référentiel Maven (sans le v au début du numéro de version) : 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.civisibility.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>

Ajoutez l’entrée ddTracerAgent au bloc de tâche configurations. Ajoutez ensuite la dépendance du traceur Java Datadog en remplaçant $VERSION par la dernière version du traceur disponible dans le référentiel Maven (sans le v au début du numéro de version) : Maven Central

build.gradle

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

Instrumenter vos tests

Configurez le plug-in Maven Surefire ou le plug-in Maven Failsafe (ou les deux) pour utiliser l’Agent Java Datadog. Prenez soin de spécifier le nom du service ou de la bibliothèque testé(e) avec la propriété -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>

Exécutez normalement vos tests, en spécifiant l’environnement dans lequel sont exécutés les tests (par exemple, local lorsque les tests sont exécutés sur la machine d’un développeur ou ci lorsqu’ils sont exécutés sur un fournisseur de CI) dans la variable d’environnement DD_ENV. Exemple :

DD_ENV=ci mvn clean verify -Pdd-civisibility

Configurez la tâche Gradle test en ajoutant à l’attribut jvmArgs l’argument -javaagent ciblant le traceur Java Datadog en fonction de la propriété configurations.ddTracerAgent. Spécifiez également le nom du service ou de la bibliothèque testé(e) avec la propriété -Ddd.service :

build.gradle

test {
  if(project.hasProperty("dd-civisibility")) {
    jvmArgs = ["-javaagent:${configurations.ddTracerAgent.asPath}", "-Ddd.service=my-java-app", "-Ddd.civisibility.enabled=true"]
  }
}

Exécutez normalement vos tests, en spécifiant l’environnement concerné (par exemple, local pour des tests exécutés sur la machine d’un développeur, ou ci pour des tests exécutés sur un fournisseur de CI) dans la variable d’environnement DD_ENV. Exemple :

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

Remarque : les builds Gradle peuvent être automatiquement personnalisés. Selon votre configuration de build spécifique, vous devrez donc peut-être adapter ces étapes.

Paramètres de configuration

Les propriétés système suivantes définissent des options de configuration. Il existe une variable d’environnement pour chacune de ces propriétés système. Si le même type de clé est défini pour une propriété système et la variable d’environnement correspondante, la configuration de la propriété système est prioritaire. Les propriétés système peuvent être définies en tant que flags JVM.

dd.service
Nom du service ou de la bibliothèque testé(e).
Variable d’environnement : DD_SERVICE
Valeur par défaut : unnamed-java-app
Exemple : my-java-app
dd.env
Nom de l’environnement dans lequel sont exécutés les tests.
Variable d’environnement : DD_ENV
Valeur par défaut : none
Exemples : local, ci
dd.trace.agent.url
URL de l’Agent Datadog pour la collecte de traces, au format http://hostname:port.
Variable d’environnement : DD_TRACE_AGENT_URL
Valeur par défaut : http://localhost:8126

Vous pouvez également utiliser toutes les autres options de configuration du traceur Datadog.

Important : vous pouvez activer davantage d’intégrations si vous utilisez des tests d’intégration. Pour activer une intégration spécifique, utilisez le tableau de compatibilité du traceur Datadog afin de créer votre configuration personnalisée pour vos tests d’intégration.

Par exemple, pour activer l’intégration de requête pour le client OkHttp3, ajoutez -Ddd.integration.okhttp-3.enabled=true à votre configuration.

Recueillir les métadonnées Git

Datadog tire profit des données Git pour vous présenter les résultats de vos tests et les regrouper par référentiel, branche et commit. Les métadonnées Git sont automatiquement recueillies par l’instrumentation de test, à partir des variables d’environnement du fournisseur de CI et du dossier local .git dans le chemin du projet, le cas échéant.

Si vous exécutez des tests dans des fournisseurs de CI non pris en charge, ou sans dossier .git, vous pouvez configurer manuellement les données Git à l’aide de variables d’environnement. Ces dernières sont prioritaires et remplacent les informations détectées automatiquement. Configurez les variables d’environnement suivantes pour obtenir des données Git :

DD_GIT_REPOSITORY_URL
URL du référentiel dans lequel le code est stocké. Les URL HTTP et SSH sont prises en charge.
Exemple : git@github.com:MyCompany/MyApp.git, https://github.com/MyCompany/MyApp.git
DD_GIT_BRANCH
Branche Git testée. Ne renseignez pas cette variable si vous fournissez à la place des informations sur les tags.
Exemple : develop
DD_GIT_TAG
Tag Git testé (le cas échéant). Ne renseignez pas cette variable si vous fournissez à la place des informations sur la branche.
Exemple : 1.0.1
DD_GIT_COMMIT_SHA
Hash entier du commit.
Exemple : a18ebf361cc831f5535e58ec4fae04ffd98d8152
DD_GIT_COMMIT_MESSAGE
Message du commit.
Exemple : Set release number
DD_GIT_COMMIT_AUTHOR_NAME
Nom de l’auteur du commit.
Exemple : John Smith
DD_GIT_COMMIT_AUTHOR_EMAIL
E-mail de l’auteur du commit.
Exemple : john@example.com
DD_GIT_COMMIT_AUTHOR_DATE
Date de l’auteur du commit, au format ISO 8601.
Exemple : 2021-03-12T16:00:28Z
DD_GIT_COMMIT_COMMITTER_NAME
Nom du responsable du commit.
Exemple : Jane Smith
DD_GIT_COMMIT_COMMITTER_EMAIL
E-mail du responsable du commit.
Exemple : jane@example.com
DD_GIT_COMMIT_COMMITTER_DATE
Date du responsable du commit, au format ISO 8601.
Exemple : 2021-03-12T16:00:28Z

Dépannage

Les tests n’apparaissent pas dans Datadog après l’activation de CI  Visibility dans le traceur

Si les tests n’apparaissent pas dans Datadog, vérifiez que vous utilisez la version 0.91.0 ou une version ultérieure du traceur Java. La propriété de configuration -Ddd.civisibility.enabled=true n’est disponible qu’à partir de cette version.

Si vous devez utiliser une version antérieure du traceur, vous pouvez configurer CI Visibility à l’aide des propriétés système suivantes :

-Ddd.prioritization.type=ENSURE_TRACE -Ddd.jmxfetch.enabled=false -Ddd.integrations.enabled=false -Ddd.integration.junit.enabled=true -Ddd.integration.testng.enabled=true

Pour aller plus loin