Compatibilidad

Test Impact Analysis sólo es compatible con dd-trace>= 2.22.0 (ejecuta dd-trace --version para obtener la versión de la herramienta).

Configuración

Optimización de tests

Antes de configurar Test Impact Analysis, configura Optimización de tests para .NET. Si vas a informar de los datos a través del Agent, utiliza la versión 6.40 y versiones posteriores o 7.40 y versiones posteriores.

Activate Test Impact Analysis for the test service

You, or a user in your organization with the Intelligent Test Runner Activation (intelligent_test_runner_activation_write) permission, must activate Test Impact Analysis on the Test Service Settings page.

Test Impact Analysis enabled in test service settings in the CI section of Datadog.

Ejecutar tests con Test Impact Analysis activado

Una vez completada la configuración, ejecuta tus tests como lo haces normalmente utilizando dotnet test o VSTest.Console.exe:

dd-trace ci run --dd-service=my-dotnet-app --dd-env=ci -- dotnet test
dd-trace ci run --dd-service=my-dotnet-app --dd-env=ci -- VSTest.Console.exe {test_assembly}.dll

Desactivar la omisión de tests específicos

Puedes anular el comportamiento de Test Impact Analysis y evitar que se omitan tests específicos. Estos tests se denominan tests no omitibles.

¿Por qué no se pueden omitir los tests?

Test Impact Analysis utiliza datos de cobertura de código para determinar si deben omitirse tests o no. En algunos casos, estos datos pueden no ser suficientes para tomar esta determinación.

Algunos ejemplos son:

  • Tests que leen datos de archivos de texto.
  • Tests que interactúan con APIs ajenas al código que se está testeando (como las APIs REST remotas).
  • Designar los tests como no omitibles garantiza que Test Impact Analysis los ejecute independientemente de los datos de cobertura.

Marcar tests como no omitibles

Caso de test individual

Añade un TraitAttribute de XUnit con la clave datadog_itr_unskippable a tu caso de test para marcarlo como no omitible.

using Xunit;
using Xunit.Abstractions;

public class MyTestSuite
{
  [Fact]
  [Trait("datadog_itr_unskippable", null)]
  public void MyTest()
  {
    // ...
  }
}

Conjunto de tests

Añade un TraitAttribute de XUnit con la clave datadog_itr_unskippable a tu conjunto de test para marcarlo como no omitible.

Si un conjunto está marcado como no omitible, ninguno de los casos de test de ese conjunto puede ser omitido por Test Impact Analysis.

using Xunit;
using Xunit.Abstractions;

[Trait("datadog_itr_unskippable", null)]
public class MyTestSuite
{
  [Fact]
  public void MyTest()
  {
    // ...
  }
}

Caso de test individual

Añade un PropertyAttribute de NUnit con la clave datadog_itr_unskippable y un valor no nulo (por ejemplo, string.Empty) a tu caso de test para marcarlo como no omitible.

using NUnit.Framework;

public class MyTestSuite
{
  [Test]
  [Property("datadog_itr_unskippable", "")]
  public void MyTest()
  {
    // ...
  }
}

Conjunto de tests

Añade un PropertyAttribute de NUnit con la clave datadog_itr_unskippable y un valor no nulo (por ejemplo, string.Empty) a tu conjunto de test para marcarlo como no omitible.

Si un conjunto está marcado como no omitible, ninguno de los casos de test de ese conjunto puede ser omitido por Test Impact Analysis.

using NUnit.Framework;

[Property("datadog_itr_unskippable", "")]
public class MyTestSuite
{
  [Test]
  public void MyTest()
  {
    // ...
  }
}

Caso de test individual

Añade un TestPropertyAttribute de MsTestV2 con la clave datadog_itr_unskippable a tu caso de test para marcarlo como no omitible.

using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
public class MyTestSuite
{
  [TestMethod]
  [TestProperty("datadog_itr_unskippable", null)]
  public void MyTest()
  {
    // ...
  }
}

Referencias adicionales