Saltar al contenido

¿Cómo configurar pruebas unitarias en Unity y corregir el error de referencia de ensamblaje faltante?

Solución:

Intente usar la interfaz de usuario de Test Runner incorporada para configurar su carpeta de ensamblaje de prueba y el primer script de prueba.

Usar Window -> Test Runner -> EditMode -> "Create Test Assembly Folder", y una vez que navegue a la nueva Carpeta de ensamblaje de prueba, use el Create Test Script in current folder botón.

En particular, tu Tests.asmdef falta una inclusión de “Editor” en comparación con la configuración predeterminada (en Unity 2018.1).

{
    "name": "Tests",
    "optionalUnityReferences": [
        "TestAssemblies"
    ],
    "includePlatforms": [
        "Editor"
    ]
}

No debería tener que hacer nada manualmente en el proyecto de Visual Studio con el fin de configurar sus pruebas.

Tenga en cuenta que cuando mi archivo de ensamblaje se establece en “Cualquier plataforma” de la siguiente manera (como en su pregunta):

{
    "name": "Tests",
    "optionalUnityReferences": [
        "TestAssemblies"
    ]
}

Mis pruebas no aparecen en la ventana Test Runner.

Cuando mi archivo de ensamblaje está configurado explícitamente para incluir solo la plataforma “Editor” (según mi ejemplo anterior), mis pruebas se muestran correctamente en la ventana Test Runner.

(Este comportamiento me parece un poco contradictorio).


También debe configurar una definición de ensamblado para sus scripts. Debajo de tu Scripts, carpeta, crea un archivo de definición de ensamblaje MyScriptAssembly.asmdef (usando el menú de Unity Assets -> Create -> Assembly Definition o manualmente):

{
    "name": "MyScriptAssembly"
}

Entonces, asegúrate de que tu Tests.asmdef haga referencia a su ensamblaje de script:

{
    "name": "Tests",
    "references": [
        "MyScriptAssembly"
    ],
    "optionalUnityReferences": [
        "TestAssemblies"
    ],
    "includePlatforms": [
        "Editor"
    ],
    "excludePlatforms": [],
    "allowUnsafeCode": false
}

También puede configurar esto en la ventana del inspector de Unity Editor. Consulte ‘Referencias’ en el Inspector cuando seleccione un archivo .asmdef:

ventana del inspector de definición de ensamblaje

(Para obtener más detalles, consulte la documentación de Unity sobre archivos de definición de ensamblajes)

Finalmente encontré la solución adecuada para esto. Y todo se hace a través del Editor.

Entonces, nuestro objetivo es que el ensamblado de prueba haga referencia al ensamblado de código real. Para hacer eso necesitas definir ambas asambleas y luego establezca la referencia en unidad.

  1. Cree sus pruebas como de costumbre desde dentro de Unity. Con la generación de la asamblea.
  2. Vaya a su carpeta de scripts (generalmente Activos / Scripts) y haga clic derecho -> Crear definición de ensamblaje esto creará un archivo de ensamblaje allí también.
  3. Ir a la información de montaje de sus pruebas en unidad y agregar una referencia a su ensamblaje real y también asegúrese de que solo esté marcado para el Editor plataforma.

Estas listo. Tus pruebas deben ser visibles y ejecutables en Unity y pueden hacer referencia a cualquier otro script.


Tenga en cuenta que es seguro eliminar TODOS los archivos .csproj y .sln en la carpeta raíz y Unity los volverá a crear (tampoco deberían estar en el control de código fuente).

Por lo tanto, su prueba para realizar cambios como ese siempre debe ser

  1. Elimine cualquier archivo relacionado con Visual Studio en la carpeta.
  2. Seleccione Activos -> Abrir proyecto C #. Deja que haga su cosa.
  3. Si todo se compila y se ejecuta y sus pruebas también lo hacen, ha configurado las cosas muy bien.

Bono: también tenemos un par de proyectos de depuración en nuestro proyecto que se encuentran en Activos / DebugScenes / DebugScripts. Al crear un ensamblaje separado para ellos y hacer que haga referencia al ensamblaje de scripts real (si es necesario) y marcarlo como Editor plataforma, nos aseguramos de que estos scripts nunca se incluyan en nuestra compilación sin ningún paso adicional durante la compilación.


Lectura extra. Es posible que esté pensando que no desea crear un ensamblado para TODOS sus scripts, ya que solo desea probar algunos de ellos. Y es cierto que puede crear un ensamblaje para una subcarpeta, pero esto le traerá problemas, ya que luego tendrá que crear una referencia de un ensamblaje de scripts real a otro. Así que asegúrese de que todo esté bien, ordenado y tenga sentido …


Nuestras informaciones de prueba y ensamblaje de guiones reales una al lado de la otra.  El título del juego tiene planetario

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *