unit testing - unittest - SenTestKit: ¿limpieza después de que se hayan ejecutado TODAS las pruebas?
unit test c# ejemplo (2)
Estoy usando SenTest en XCode para mis pruebas unitarias. Debo ejecutar una tarea de línea de comandos para que mis pruebas unitarias sean probadas. Puedo hacer eso en el método + initialize de mi clase de prueba (subclase de SenTestCase, por supuesto).
Me gustaría finalizar la tarea de la línea de comandos cuando terminen las pruebas. Como no hay un opuesto de + inicializar, estoy perplejo.
¿Hay alguna manera de subclase de una clase SenTest para hacer esto que estoy pasando por alto?
Debería consultar Google Toolbox para Mac o su derivada adicional GHUnit . Ambas (creo) proporcionan una configuración y desmantelamiento a nivel de clase al menos. Si realmente desea ejecutar una línea de comandos antes de ejecutar todas las pruebas y luego una segunda línea de comando (quizás para matar al primero) después de ejecutar las pruebas, modificaría la fase de compilación del script de shell que ejecuta las pruebas unitarias (el último paso en las fases de compilación de un objetivo de paquete UnitTest).
No ejecute su herramienta de línea de comandos en + inicializar. Eso es enviado por el tiempo de ejecución de Objective-C cuando la clase se envía por primera vez cualquier mensaje.
En su lugar, ejecute su herramienta de línea de comandos en el método +setUp
su prueba. (Tenga en cuenta que realmente quise decir +setUp
y no -setUp
, mucha gente parece ser un poco confusa sobre la diferencia entre la clase y los métodos de instancia.)
En este caso, setUp
invoca un método setUp
clase antes de ejecutar cualquiera de las pruebas en una subclase SenTestCase
, y tearDown
invoca un método tearDown
clase después de ejecutar todas las pruebas en una subclase SenTestCase
.
Entonces, el flujo general para una subclase SenTestCase
particular es:
- enviar
+setUp
aSomeTestCase
- para cada método de
test
que comienza enSomeTestCase
(llámalotest___
)- crear una nueva instancia de
SomeTestCase
- enviar
-setUp
a él - enviar
-test___
a él - enviar
-tearDown
to it - liberarlo
- crear una nueva instancia de
- enviar
+tearDown
aSomeTestCase
De esta forma, si tiene algo que hacer antes de que se ejecute alguno de sus métodos de -test
, o algo que deba hacerse después de que se ejecuten todos sus métodos de -test
, hay un punto determinista en el que puede lograrlo. (En lugar de confiar en la gestión de la memoria, que no es determinista de la misma manera, y puede no ser determinista en absoluto si está utilizando GC.)