Tengo un proyecto de Unity (versión 2020.2.1f1) y he factorizado una pequeña utilidad en C# que me gustaría probar por unidad. Actualmente, para compilar, la clase de utilidad necesita extender MonoBehaviour
, pero me gustaría evitar esto y mantener la clase C# puro.
He buscado documentación sobre pruebas unitarias en Unity, pero solo puedo encontrar Unity Test Framework, que parece estar orientado al código del juego en lugar de C# puro. ¿Hay alguna forma de probar el código C# de Vanilla en Unity?
El siguiente artículo no menciona nada acerca de que un caso de prueba deba incluir código específico de Unity https://www.raywenderlich.com/9454-introduction-to-unity-unit-testing
Después de todo, Unity ES C#. No todo en tu proyecto tiene que usar la API de Unity
¿Por qué necesita implementar MonoBehaviour
?
Te sugiero que tengas, por ejemplo
public class YourClass { ... }
y donde/si es necesario lo envuelves en un
public class YourClassBehaviour : MonoBehaviour { public YourClass yourClassInstance; }
Y luego solo pruebe la funcionalidad interna de YourClass
.
De cualquier manera: no es necesario que sea algo específico de Unity para realizar una prueba unitaria .
Puedes seguir adelante y, por ejemplo, hacer
namespace YourThingy.EditorTests { public class YourClassTest { private YourClass yourClassInstance; [OneTimeSetup] public void Setup() { yourClassInstance = new YourClass(); } [Test] public void SomeTest() { yourClassInstance.DoSomething(); Assert.AreEuqual("someValue", yourClassInstance.someValue); } [Test] public void SoemTestThatIsntEvenUsingYourClass() { Assert.IsTrue(1f == (2f * 5f / 10f)); } } }
Como puede ver, las pruebas de unidad son puramente C# y no necesariamente usan nada de la API de Unity (excepto, por supuesto, el marco de prueba en sí)
Para no tener que ingresar al modo de reproducción, solo asegúrese de estar usando Editor Tests
.