Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| Propiedad | Value |
|---|---|
| Identificador de la regla | MSTEST0072 |
| Title | '[AssemblyFixtureProvider]' no se admite con la compilación anticipada |
| Category | Usage |
| La corrección es disruptiva o no disruptiva | Non-breaking |
| Habilitado de forma predeterminada | Yes |
| Gravedad predeterminada | Warning |
| introducido en la versión | 4.4.0 (versión preliminar) |
| ¿Hay una corrección de código? | No |
Importante
Este analizador está planeado para MSTest 4.4 y solo está disponible en compilaciones en versión preliminar hasta que se publique MSTest 4.4.0.
Causa
Un proyecto aplica [AssemblyFixtureProvider], ya sea directamente o a través de una biblioteca a la que se hace referencia, al publicar con AOT nativo () o Con WebAssembly AOT (PublishAotRunAOTCompilation).
Descripción de la regla
[AssemblyFixtureProvider] discovery recorre el gráfico de referencia del ensamblado en tiempo de ejecución, que requiere que el tiempo de ejecución genere código dinámico. Los tipos de compilación de antemano, como AOT nativo y WebAssembly de Blazor, no pueden generar código dinámico, por lo que el tiempo de ejecución omite silenciosamente la detección y los métodos del [AssemblyInitialize]/[AssemblyCleanup] accesorio nunca se ejecutan.
// Violation: ignored at run time under Native AOT / Blazor WebAssembly AOT.
[assembly: AssemblyFixtureProvider(typeof(SharedFixtures))]
El analizador notifica este diagnóstico si el atributo se aplica en la compilación actual o en un ensamblado al que se hace referencia, ya que el proyecto de prueba de AOT nativo que consume pierde silenciosamente sus accesorios de ensamblado.
Cómo corregir infracciones
Declare los [AssemblyInitialize] métodos y [AssemblyCleanup] directamente en el ensamblado de prueba en lugar de confiar en una biblioteca compartida [AssemblyFixtureProvider] .
public static class Fixtures
{
[AssemblyInitialize]
public static void Init(TestContext context) { }
}
Cuándo suprimir las advertencias
No suprima advertencias de esta regla para un proyecto que publique realmente con AOT nativo o WebAssembly AOT de Blazor, ya que los métodos de accesorio no se ejecutarán y ningún estado que configure no existirá para las pruebas. La supresión solo es razonable si la configuración publicada por AOT no ejecuta las pruebas afectadas.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable MSTEST0072
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0072
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0072.severity = none
Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.