• Juegos
  • Industria
  • Recursos
  • Comunidad
  • Aprendizaje
  • Asistencia
Desarrollo
Motor de Unity
Crea juegos 2D y 3D para cualquier plataforma
DescargarPlanes y precios
Monetización
Compra dentro de la aplicación (IAP)
Descubre y gestiona IAP en todas las tiendas
Mediación
Maximiza los ingresos y optimiza la monetización
Calidad de anuncios
Protege la experiencia del usuario de tu aplicación
Tapjoy
Construye lealtad de usuarios a largo plazo
Todos los productos de monetización
Adquisición de usuarios
Adquisición de usuarios
Hazte descubrir y adquiere usuarios móviles
Unity Vector AI
Conecta a los jugadores con los juegos adecuados
Publicidad en el dispositivo Aura
Alcanza a los usuarios en el dispositivo en el momento de mayor compromiso
Todos los productos de crecimiento
Casos de uso
Colaboración 3D
Construye y revisa proyectos 3D en tiempo real
Capacitación envolvente
Capacitación en entornos envolventes
Experiencias del cliente
Crea experiencias interactivas en 3D
Todas las soluciones de la industria
Industrias
Fabricación
Logra la excelencia operativa
Venta minorista
Transforma las experiencias en tienda en experiencias en línea
Industria automotriz
Eleva la innovación y las experiencias en el automóvil
Todas las industrias
Biblioteca técnica
Documentación
Manuales de usuario oficiales y referencias de API
Herramientas para desarrolladores
Versiones de lanzamiento y rastreador de problemas
Hoja de ruta
Revisar características próximas
Glosario
Biblioteca de términos técnicos
Información útil
Casos de estudio
Historias de éxito en el mundo real
Guías de mejores prácticas
Consejos y trucos de expertos
Todos los recursos
Novedades
Blog
Actualizaciones, información y consejos técnicos
Novedades
Noticias, historias y centro de prensa
Centro de la comunidad
Discusiones
Discute, resuelve problemas y conéctate
Eventos
Eventos globales y locales
Historias de la comunidad
Hecho con Unity
Presentando a los creadores de Unity
Transmisiones en vivo
Únete a desarrolladores, creadores e insiders
Premios Unity
Celebrando a los creadores de Unity en todo el mundo
Para todos los niveles
Unity Learn
Domina las habilidades de Unity de forma gratuita
Capacitación profesional
Mejora tu equipo con entrenadores de Unity
¿No tienes experiencia con Unity?
Primeros pasos
Pon en marcha tu aprendizaje
Rutas esenciales de Unity
¿No tienes experiencia con Unity? Comienza tu viaje
Guías prácticas
Consejos prácticos y mejores prácticas
Educación
Para estudiantes
Impulsa tu carrera
Para docentes
Potencia tu enseñanza
Licencia gratuita para fines educativos
Lleva el poder de Unity a tu institución
Certificaciones
Demuestra tu dominio de Unity
Opciones de soporte
Obtener ayuda
Ayudándote a tener éxito con Unity
Planes de éxito
Alcanza tus metas más rápido con soporte experto
PREGUNTAS FRECUENTES
Respuestas a preguntas comunes
Contáctanos
Conéctate con nuestro equipo
Planes y precios
Idioma
  • English
  • Deutsch
  • 日本語
  • Français
  • Português
  • 中文
  • Español
  • Русский
  • 한국어
Social
Moneda
Comprar
  • Productos
  • Unity Ads
  • Suscripción
  • Tienda de recursos de Unity
  • Distribuidores
Educación
  • Estudiantes
  • Instructores
  • Instituciones
  • Certificación
  • Learn
  • Programa de desarrollo de habilidades
Descargar
  • Unity Hub
  • Descargar archivo
  • Programa beta
Unity Labs
  • Laboratorios
  • Publicaciones
Recursos
  • Plataforma Learn
  • Comunidad
  • Documentación
  • Preguntas y respuestas Unity
  • PREGUNTAS FRECUENTES
  • Estado de servicios
  • Casos de estudio
  • Made with Unity
Unity
  • Nuestra empresa
  • Boletín
  • Blog
  • Eventos
  • Empleos
  • Ayuda
  • Prensa
  • Socios
  • Inversionistas
  • Afiliados
  • Seguridad
  • Impacto social
  • Inclusión y diversidad
  • Contacto
Copyright © 2025 Unity Technologies
  • Legal
  • Política de privacidad
  • Cookies
  • No quiero que se venda ni se comparta mi información personal

"Unity", los logotipos de Unity y otras marcas comerciales de Unity son marcas comerciales o marcas comerciales registradas de Unity Technologies o de sus empresas afiliadas en los Estados Unidos y el resto del mundo (más información aquí). Los demás nombres o marcas son marcas comerciales de sus respectivos propietarios.

Hero background image

Cómo ejecutar pruebas automatizadas para tus juegos con Unity Test Framework

Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.
Haz clic aquí.

En el desarrollo de juegos, las pruebas manuales pueden volverse repetitivas y propensas a errores rápidamente. ¿Alguna vez te has encontrado en uno de estos ciclos de prueba aparentemente interminables mientras trabajas en una nueva función o intentas corregir un error?

Al automatizar tus pruebas de código, puedes dedicar más tiempo al desarrollo de juegos creativos y menos a tareas de control de calidad repetitivas (pero importantes) que garantizan que agregar, eliminar o cambiar código no arruina tu proyecto.

Unity te ayuda a crear, administrar y ejecutar pruebas automatizadas para tus juegos con Unity Test Framework.

  • marco-de-pruebas-de-two-ways-Unity
  • Cómo probar Unity Test Framework
  • Configuración de Unity Test Framework
  • Probar definiciones de ensamblado
  • Agregar referencias a las definiciones de ensamblado

Prueba dos opciones en Unity Test Framework

Unity Test Framework (UTF) te permite probar el código de tu proyecto en los modos Edit y Play. También puedes orientarte al código de prueba para varias plataformas, como plataformas independientes, iOS o Android.

El UTF se instala agregándolo a tu proyecto con Package Manager.

Debajo del capó, UTF se integra con NUnit, que es una conocida biblioteca de pruebas de código abierto para lenguajes .NET.

Hay dos categorías principales de pruebas que puedes escribir con UTF: modo de edición y modo de juego:

Las pruebas del modo de edición se ejecutan en Unity Editor y tienen acceso tanto al Editor como al código del juego. Eso significa que puedes probar tus extensiones personalizadas del Editor o utilizar pruebas para modificar los ajustes en el Editor y entrar en el modo Play. Esto es útil para ajustar los valores del Inspector y, luego, ejecutar pruebas automatizadas con muchos ajustes diferentes.

Las pruebas del modo Play te permiten ejercitar el código de tu juego durante el tiempo de ejecución. Las pruebas se suelen ejecutar como corrutinas utilizando el atributo [UnityTest]. Esto te permite probar un código que puede ejecutarse en varios frames. De forma predeterminada, las pruebas del modo Play se ejecutarán en el Editor, pero también puedes hacerlo en una compilación de jugador independiente para varias plataformas de destino.

pruebas automatizadas
El paquete Third-Person Character Controller, disponible en Unity Asset Store

Cómo probar Unity Test Framework

Para seguir con este ejemplo, deberás instalar el paquete Starter Assets - Third Person Character Controller de Unity Asset Store e importarlo en un nuevo proyecto.

pruebas automatizadas
El archivo manifest.json

Configuración de Unity Test Framework

Instala UTF a través de Window > Package Manager. Busca Test Framework en Unity Registry en Package Manager. Asegúrate de seleccionar la versión 1.3.3 (la versión más reciente en el momento de escribir este artículo).

Una vez instalado el UTF, abre el archivo Packages/manifest.json con un editor de texto y agrega una sección de comprobables después de las dependencias, de la siguiente manera:

,
"testables": [
"com.unity.inputsystem"
]

Guarda el archivo. Esto te resultará útil más adelante, cuando necesitarás hacer referencia al ensamblado Unity.InputSystem.TestFramework para probar y emular la entrada del jugador.

Regresa al Editor y permite que se instale la versión más reciente.

pruebas automatizadas
Referencias de definición de ensamblado en el Inspector para el control de personajes en tercera persona

Probar definiciones de ensamblado

Haz clic en Window > General > Test Runner para ver la ventana del Editor Test Runner.

En esta parte del tutorial, el enfoque será crear pruebas del modo Play. En lugar de usar las opciones Create Test Assembly Folder (crear carpeta de ensamblado de prueba) en la ventana Test Runner, las crearás con la ventana Project (proyecto).

Con la raíz de tu carpeta Project Assets resaltada, haz clic derecho y elige Create > Testing > Tests Assembly Folder (Crear > Pruebas > Carpeta de ensamblado de pruebas).

Se agrega una carpeta del proyecto Tests, la cual contiene un archivo Tests.asmdef (definición de ensamblado). Esto es necesario para que las pruebas hagan referencia a tus módulos y dependencias de juego.

El código del controlador de personaje se referenciará en las pruebas y también necesitará una definición de ensamblado. Luego, configurarás algunas definiciones y referencias de ensamblado para facilitar las pruebas entre los módulos.

Haz clic derecho en la carpeta del proyecto Assets/StarterAssets/InputSystem y elige Create > Assembly Definition. Dile algo descriptivo, por ejemplo, StarterAssetsInputSystem.

Selecciona el nuevo archivo StarterAssetsInputSystem.asmdef y, con el Inspector, agrega una referencia de definición de ensamblado a Unity.InputSystem. Haz clic en Apply.

Haz clic derecho en la carpeta del proyecto Assets/StarterAssets/Third PersonController/Scripts y elige Create > Assembly Definition. Dile algo descriptivo, por ejemplo, ThirdPersonControllerMain.

Como hiciste con la definición de ensamblado anterior, abre ThirdPersonControllerMain en el Inspector y selecciona referencias para:

- Unity.InputSystem

- StarterAssetsInputSystem

Haz clic en Aplicar.

pruebas automatizadas
Agregar referencias a las definiciones de ensamblado

Agregar referencias a las definiciones de ensamblado

Para emular partes de Input System, deberás hacer referencia a esta herramienta en tus pruebas. Además, deberás hacer referencia al espacio de nombres StarterAssets en un ensamblado que crearás para el código Third Person Controller.

Abre Tests.asmdef en el Inspector y agrega una referencia a las siguientes definiciones de ensamblado:

- UnityEngine.TestRunner

- UnityEditor.TestRunner

- Unity.InputSystem

- Unity.InputSystem.TestFramework

- ThirdPersonControllerMain

Haz clic en Apply.

  • Tu primera prueba
  • Crear un script de prueba en C#
  • Pasar tu primera prueba
  • Pruebas de movimiento de personajes
  • Pruebas de daños por caídas
  • Ejecutar la nueva prueba
  • Ejecución de pruebas en el reproductor independiente
  • Automatización y CI
  • Dividir compilación y ejecución
  • Ejecutar una prueba después de dividir la compilación y ejecutar
  • Más recursos sobre las pruebas en Unity
Ventana Build Settings.
Ventana Build Settings.

Tu primera prueba

Tu primera prueba incluirá algunos conceptos básicos sobre cómo cargar y mover el personaje principal del paquete Third Person Controller.

Para comenzar, configura el nuevo proyecto con una escena de entorno de prueba simple y un recurso de Prefab de personaje con el que trabajar.

Abre la escena llamada Assets/StarterAssets/Third PersonController/Scenes/Playground.unity y guarda una copia de ella en el menú File > Save As (Archivo > Guardar como) en esta nueva ruta: Assets/Scenes/SimpleTesting.unity

Si notas materiales rosados en la vista de Juego, utiliza el convertidor del canal de renderizado para actualizar los materiales del canal de renderizado integrado al canal de renderizado universal (URP). Consulta este artículo para ver una descripción general rápida.

Crea una nueva carpeta en tu carpeta Project Assets llamada Resources. Nota: El nombre de la carpeta «Resources» es importante para que se pueda utilizar el método Unity Resources.Load().

Arrastre y suelte el GameObject PlayerArmature en la vista Scene en la nueva carpeta Resources y elija crear un prefab original cuando se le solicite. Cambiar el nombre del personaje del asset Prefab.

Este será el personaje base que utilizarás el Prefab en tus pruebas de ahora en adelante.

Eliminar el GameObject PlayerArmature de la nueva escena de SimpleTesting y guardar los cambios en la escena.

Para el último paso de la configuración de prueba inicial, ve a File > Build Settings (Archivo > Ajustes de compilación) y elige Add Open Scenes (Agregar escenas abiertas) para agregar la escena Scenes/SimpleTesting (Pruebas simples) a los ajustes de compilación.

Crear un script de prueba en C#

Selecciona la carpeta Tests en la carpeta Project Assets. Haz clic derecho y elige Create > Testing > C# Test Script.

Asignar el nombre al nuevo Script CharacterTests. Abre el script en tu IDE para ver más de cerca.

Se suministran dos stubs de método con el archivo de clase inicial, lo que demuestra algunos conceptos básicos de la prueba.

Luego, asegúrate de que las pruebas carguen una escena del juego "centrada en las pruebas". Esta debe ser una escena que contenga el mínimo requerido para probar el sistema o componente en el que te enfocas.

Actualiza la clase CharacterTests para agregar dos sentencias nuevas con la clase InputTestFixture:

using UnityEngine.InputSystem;
using UnityEngine.SceneManagement;

public class CharacterTests: InputTestFixture

Agregar dos campos privados a la parte superior de la clase CharacterTests:

Personaje GameObject = Resources.Load("Personaje");
Teclado del teclado;

El campo de personaje almacenará una referencia al Prefab del personaje, cargado desde la carpeta Resources. El teclado contiene una referencia al dispositivo de entrada de teclado proporcionado por InputSystem.

Para anular el método Setup() de la clase InputTestFixture base, proporciona el tuyo propio en la clase CharacterTests:

public override void Setup()
{
SceneManager.LoadScene("Scenes/SimpleTesting");
base.Setup();
keyboard = InputSystem.AddDevice();

var mouse = InputSystem.AddDevice();
Press(mouse.rightButton);
Release(mouse.rightButton);;
}

El método Setup() ejecuta la clase base Setup() y, luego, configura tu propia clase CharacterTests cargando la escena de prueba e inicializando el dispositivo de entrada del teclado.

La entrada del mouse se agrega puramente para que el Third Person Controller comience a recibir la entrada del dispositivo de teclado simulado/virtual. Esto es casi como una acción de "establecer enfoque".

Para tu primera prueba, instanciarás el personaje del Prefab y asegurarás que no sea null. Agrega el siguiente método a tu clase de prueba:

[Prueba]
public void TestPlayerInstantiation()
{
GameObject characterInstance = GameObject.Instantiate(personaje, Vector3.zero, Quaternion.identity);
Assert.That(characterInstance, !Is.Null);
}

Mientras estás allí, es posible que desees limpiar los métodos de prueba de la plantilla de muestra. Eliminar los métodos CharacterTestsSimplePasses y CharacterTestsWithEnumeratorPasses.

prueba aprobada
La marca verde significa que el examen se aprobó correctamente

Pasar tu primera prueba

Guarda el script y regresa a la ventana Test Runner en el Editor. Resalta la prueba TestPlayerInstantiation y haz clic en Run Selected (Ejecutar seleccionado).

La marca de verificación verde significa que se aprobó un examen. Aseveraste que el personaje se puede cargar desde recursos, instanciar en la escena de prueba y no es null en ese punto.

Te habrás dado cuenta de que la anotación [Test] se utilizó para esta prueba en lugar de la anotación [UnityTest]. El atributo UnityTest permite que las corrutinas ejecuten pruebas en varios frames. En este caso, solo tienes que instanciar el personaje y afirmar que está cargado.

En general, debes usar el atributo NUnit Test en lugar del atributo UnityTest en el modo de edición, a menos que necesites dar instrucciones especiales, omitas un frame o esperes cierto tiempo en el modo Play.

Probar el movimiento de los personajes en el modo Play
Probar el movimiento de los personajes en el modo Play

Pruebas de movimiento de personajes

Luego, utilizarás UnityTest para afirmar que mantener presionada la tecla del control hacia adelante hace que el personaje avance.

Agrega el nuevo método de prueba que se proporciona a continuación a tu clase CharacterTests.

Aparecieron dos nuevos métodos auxiliares de prueba: Press() y Release(). Ambas son proporcionadas por la clase base InputTestFixture y te ayudan a emular el control de InputSystem presionando y soltando.

El método TestPlayerMoves() hace lo siguiente:

Instancia una instancia del personaje a partir del Prefab en la ubicación (X: 0, Y: 0, Z: 0)

Presiona la tecla de flecha hacia arriba en el teclado virtual durante 1 segundo y, luego, suéltala

Espera 1 segundo más (para que el personaje se ralentice y deje de moverse)

Afirma que el personaje se ha movido a una posición en el eje Z superior a 1.5 unidades.

Guarda el archivo, regresa al Test Runner y ejecuta la nueva prueba.

El script Player Health
El script Player Health

Pruebas de daños por caídas

Luego, probarás un script MonoBehaviour personalizado agregando un componente simple Player Health.

Crear un nuevo script en Assets/StarterAssets/Third PersonController/Scripts. Llamémoslo PlayerHealth.

Abre el script en tu IDE y reemplaza el contenido por el código que se proporciona a continuación.

Aquí se agrega mucho código nuevo. Para resumirlo, este script determinará si el personaje del jugador está cayendo. Si una vez caes al suelo, la salud del personaje se reduce un 10 %.

Busca el Prefab del personaje en Assets/Resources. Abre el Prefab y agrega el nuevo componente de script PlayerHealth.

Luego, utilizarás la escena de prueba para asegurarte de que la salud del jugador se deteriore después de caerse de una cornisa.

Con el atributo [UnityTest], puedes escribir una prueba del modo Play para detectar daños por caídas. Al caer durante más de 0.2 segundos, el jugador debe recibir 0.1f de daño (el equivalente al 10% de la salud máxima).

En la escena de SimpleTesting, verás una escalera que conduce a una cornisa. Esta es una plataforma de prueba para generar el personaje sobre el script PlayerHealth y probarlo.

Vuelve a abrir CharacterTests.cs y agrega un nuevo método de prueba llamado TestPlayerFallDamage:

[UnityTest]
public IEnumerator TestPlayerFallDamage()
{
// generar el personaje en un área lo suficientemente alta en la escena de prueba
GameObject characterInstance = GameObject.Instantiate(personaje, nuevo Vector3(0f, 4f, 17.2f), Quaternion.identity);

// Obtener una referencia al componente PlayerHealth y afirmar que se encuentra en estado de salud total (1f)
var characterHealth = characterInstance.GetComponent();
Assert.That(characterHealth.Health, Is.EqualTo(1f));

// Salir de la cornisa y esperar la caída
Press(keyboard.upArrowKey);
devolver rendimiento nuevo WaitForSeconds(0.5f);
Release(keyboard.upArrowKey);
yield return new WaitForSeconds(2f);

// Afirmar que se perdió 1 punto de salud debido al daño por caída
Assert.That(characterHealth.Health, Is.EqualTo(0.9f));
}

También deberás agregar una referencia utilizando el espacio de nombres StarterAssets en la parte superior del archivo de la clase:

usar StarterAssets;

La prueba de arriba sigue un patrón típico de arreglo, acción y afirmación (AAA), comúnmente encontrado en las pruebas:

  • La sección Arrange de un método de prueba unitaria inicializa los objetos y establece el valor de los datos que se pasan al método que se está probando.
  • La sección Act invoca el método en prueba con los parámetros dispuestos. En este caso, la invocación del método que se está probando se maneja mediante una interacción de física cuando el jugador toca el suelo después de caer.

La sección Assert verifica que la acción del método que se está probando se comporte según lo esperado.

Luego, probarás un script MonoBehaviour personalizado agregando un componente simple Player Health.

Crear un nuevo script en Assets/StarterAssets/Third PersonController/Scripts. Llamémoslo PlayerHealth.

Abre el script en tu IDE y reemplaza el contenido por el código que se proporciona a continuación.

Aquí se agrega mucho código nuevo. Para resumirlo, este script determinará si el personaje del jugador está cayendo. Si una vez caes al suelo, la salud del personaje se reduce un 10 %.

Busca el Prefab del personaje en Assets/Resources. Abre el Prefab y agrega el nuevo componente de script PlayerHealth.

Luego, utilizarás la escena de prueba para asegurarte de que la salud del jugador se deteriore después de caerse de una cornisa.

Con el atributo [UnityTest], puedes escribir una prueba del modo Play para detectar daños por caídas. Al caer durante más de 0.2 segundos, el jugador debe recibir 0.1f de daño (el equivalente al 10% de la salud máxima).

En la escena de SimpleTesting, verás una escalera que conduce a una cornisa. Esta es una plataforma de prueba para generar el personaje sobre el script PlayerHealth y probarlo.

Vuelve a abrir CharacterTests.cs y agrega un nuevo método de prueba llamado TestPlayerFallDamage:

[UnityTest]
public IEnumerator TestPlayerFallDamage()
{
// generar el personaje en un área lo suficientemente alta en la escena de prueba
GameObject characterInstance = GameObject.Instantiate(personaje, nuevo Vector3(0f, 4f, 17.2f), Quaternion.identity);

// Obtener una referencia al componente PlayerHealth y afirmar que se encuentra en estado de salud total (1f)
var characterHealth = characterInstance.GetComponent();
Assert.That(characterHealth.Health, Is.EqualTo(1f));

// Salir de la cornisa y esperar la caída
Press(keyboard.upArrowKey);
devolver rendimiento nuevo WaitForSeconds(0.5f);
Release(keyboard.upArrowKey);
yield return new WaitForSeconds(2f);

// Afirmar que se perdió 1 punto de salud debido al daño por caída
Assert.That(characterHealth.Health, Is.EqualTo(0.9f));
}

También deberás agregar una referencia utilizando el espacio de nombres StarterAssets en la parte superior del archivo de la clase:

usar StarterAssets;

La prueba de arriba sigue un patrón típico de arreglo, acción y afirmación (AAA), comúnmente encontrado en las pruebas:

La sección Arrange de un método de prueba unitaria inicializa los objetos y establece el valor de los datos que se pasan al método que se está probando.

La sección Act invoca el método en prueba con los parámetros dispuestos. En este caso, la invocación del método que se está probando se maneja mediante una interacción de física cuando el jugador toca el suelo después de caer.

La sección Assert verifica que la acción del método que se está probando se comporte según lo esperado.

Test Runner: ejecución de pruebas
Una prueba para garantizar que un personaje caiga en el juego según lo previsto, lo que incluye incurrir en la cantidad correcta de daño

Ejecutar la nueva prueba

Vuelve al Editor y ejecuta la nueva prueba. Al ejecutarse en el modo Play, verás al personaje salirse del borde, caer (superando el umbral de 0.2 segundos para categorizar una caída) y recibir daño después de tocar el suelo.

Las pruebas no solo sirven para probar que los cambios en el código no rompen la funcionalidad, sino que también pueden servir como documentación o indicadores para ayudar a que los desarrolladores piensen en otros aspectos del juego al modificar los ajustes.

Cómo cambiar de prueba para ejecutarse en una compilación de jugador independiente
Cómo cambiar de prueba para ejecutarse en una compilación de jugador independiente

Ejecución de pruebas en el reproductor independiente

Como se mencionó anteriormente, al ejecutar las pruebas del modo Play en Test Runner de forma predeterminada, se ejecutan en el modo Play con Unity Editor. También puedes cambiarlos para que se ejecuten bajo un jugador independiente.

Usa la selección desplegable Run Location (Ejecutar ubicación) en la ventana Test Runner para cambiar las pruebas a fin de ejecutarlas en compilaciones de jugadores independientes.

Automatización y CI

Una vez que hayas comenzado a crear un conjunto de pruebas, el siguiente paso es ejecutarlas automáticamente una vez que se hayan completado. Las pruebas unitarias y de integración automatizadas que se ejecutan después de la compilación son útiles para detectar regresiones o errores lo antes posible. También se pueden ejecutar como parte de un sistema automatizado remoto en la nube.

Dividir compilación y ejecución

Muchas veces, lo ideal es que captures los resultados de las pruebas en un formato personalizado para que los resultados se puedan compartir con un público más amplio. Para capturar los resultados de las pruebas fuera de Unity Editor, deberás dividir los procesos de compilación y ejecución.

Crea un nuevo script en la carpeta de tu proyecto Tests llamado SetupPlaymodeTestPlayer.

La clase SetupPlaymodeTestPlayer implementará la interfaz ITestPlayerBuildModifier. Lo utilizarás para anular y "engancharte" al método ModifyOptions, que recibe las opciones del jugador de la compilación y te permite modificarlas.

usar System.IO;
using UnityEditor;
using UnityEditor.TestTools;

[ensamblado: TestPlayerBuildModifier(typeof(SetupPlaymodeTestPlayer))]
public class SetupPlaymodeTestPlayer : ITestPlayerBuildModifier
{
public BuildPlayerOptions ModifyOptions(BuildPlayerOptions playerOptions)
{
playerOptions.options &= ~(BuildOptions.AutoRunPlayer | BuildOptions.ConnectToHost);

var buildLocation = Path.GetFullPath("TestPlayers");
var fileName = Path.GetFileName(playerOptions.locationPathName);
if (!string.IsNullOrEmpty(fileName))
buildLocation = Path.Combine(buildLocation, fileName);
playerOptions.locationPathName = buildLocation;

devolver playerOptions;
}
}

Este script modificador de Player Build personalizado hace lo siguiente cuando se ejecutan pruebas en el modo Play (Run Location: On Player):

Desactiva la ejecución automática para los jugadores creados y omite la opción de jugador que intenta conectarse al host en el que se está ejecutando

Cambia la ubicación de la ruta de compilación a una ruta dedicada dentro del proyecto (TestPlayers)

Con esto completo, ahora puedes esperar que las compilaciones se encuentren en la carpeta TestPlayers cada vez que terminen de compilarse. Esto ahora completa las modificaciones de compilación y elimina el vínculo entre compilación y ejecución.

Luego, implementarás el informe de resultados. Esto te permitirá escribir los resultados de la prueba en un lugar personalizado, listo para la generación y publicación automatizadas de informes.

Crea un nuevo script en la carpeta de tu proyecto Tests llamado ResultSerializer (que se proporciona a continuación). Esta clase utilizará una referencia de ensamblado para TestRunCallback e implementará la interfaz ITestRunCallback.

Esta implementación de ITestRunCallback incluye un método RunFinished personalizado, que es el que configura una compilación de jugador con pruebas para escribir los resultados de la prueba en un archivo XML llamado testresults.xml.

Código
Puedes encontrar los resultados en el archivo testresults.xml ubicado en la ubicación Application.persistentDataPath de tu plataforma.

Ejecutar una prueba después de dividir la compilación y ejecutar

Con SetupPlaymodeTestPlayer.cs y ResultSerializer.cs combinados, los procesos de compilación y ejecución ahora están divididos. Al ejecutar las pruebas, los resultados se enviarán a testresults.xml, ubicado en la ubicación Application.persistentDataPath de la plataforma del jugador.

Para utilizar algunos de los tipos de estas clases de gancho, deberás agregar una referencia adicional a Tests.asmdef. Actualiza para agregar la referencia de definición del ensamblado UnityEditor.UI.EditorTests.

Al ejecutar las pruebas en el reproductor, ahora se obtendrá una compilación del jugador en la carpeta TestPlayers y un archivo testresults.xml en Application.persistentDataPath.

Portada de libro electrónico

Más recursos sobre las pruebas en Unity

Curso Unity Test Framework

El paquete Test Framework incluye un curso de prueba con ejercicios de muestra para ayudarte a obtener más información sobre las pruebas con Unity. Asegúrate de tomar los archivos del proyecto para el curso con Package Manager.

Uso de Package Manager > Paquetes: Unity Registry > Test Framework, busca la lista desplegable Samples (muestras) e importa los ejercicios del curso.

Los ejercicios se importarán a tu proyecto y se ubicarán en Assets/Samples/ Test Framework. Cada muestra incluye una carpeta de ejercicios para que trabajes, así como una solución para comparar tu propio trabajo a medida que avanzas.

QA tu código con UTF

Esta charla Unite Copenhague sobre el UTF ofrece más detalles y algunos otros casos de uso interesantes para la personalización de las pruebas. Consulta esta página para ver qué más es posible hacer.

Depuración en Unity

Acelera tu flujo de trabajo de depuración en Unity con artículos sobre:

- Microsoft Visual Studio 2022

- Microsoft Visual Studio Code

Libros electrónicos técnicos avanzados

Unity proporciona varias guías avanzadas para ayudar a los desarrolladores profesionales a optimizar el código del juego. Crea una guía de estilo en C#: Escribe código más limpio que sea escalable y recopila consejos de expertos de la industria sobre cómo crear una guía de estilo de código para ayudar a tu equipo a desarrollar una base de código limpia, legible y escalable.

Otra guía popular entre nuestros usuarios son más de 70 consejos para aumentar la productividad con Unity. Incluye muchos consejos para ahorrar tiempo y mejorar tu flujo de trabajo agregado diario con Unity 2020 LTS, incluidos consejos que hasta los desarrolladores experimentados podrían haberse perdido.

Documentación

Explora más a fondo la API más reciente de TestRunner, conoce otros atributos personalizados de UTF y descubre más ciclos de vida a los que puedes dedicarte con la documentación de UTF.

Encuentra todos los libros y artículos electrónicos avanzados de Unity en el centro de prácticas recomendadas de Unity.