2010-11-28 15 views
9

En el JavaDoc de ActivityUnitTestCase que dice:ActivityUnitTestCase y startActivity

no lo llaman de su método setup(). Debe llamar a este método desde cada uno de sus métodos de prueba.

no está poniendo algo en cada método de prueba equivalente a ponerlo en setUp, teniendo en cuenta que la idea detrás de este método es hacer exactamente eso, es decir, la ejecución de algo antes de cada prueba?

Además, ¿por qué no se nos permite hacer eso? Lo intenté, y funciona bien.

+0

en una plataforma de prueba correctamente sintonizada, sí; cualquier código que pueda probar, incluidas las afirmaciones que necesita calificar, puede refactorizarse dentro y fuera de setUp libremente. En una plataforma de prueba de Android, sin embargo ... – Phlip

Respuesta

3

Parece que setUp se ejecuta con el cargador de clases del proyecto de prueba, mientras que los métodos de prueba reales se ejecutan con la aplicación bajo el cargador de clases de prueba. Véase, por ejemplo, la discusión sobre la lista de correo RoboGuice:

http://groups.google.com/group/roboguice/browse_thread/thread/2e129f87ead10b10

¿Por qué este es el caso, no estoy seguro (que parece una decisión de diseño muy extraño para mí). Pero el resultado es que no puedes acceder a nada en la aplicación bajo prueba en tu método setUp. Que se mueve hacia el territorio de la tetera de chocolate.

Tenga en cuenta que esta restricción no se aplica si se está probando un proyecto de biblioteca como se describe aquí:

http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/

Debido a que en ese caso las pruebas y el código bajo prueba están todos en una sola aplicación.

-1

Creo que la razón por la que dicen que es más una "mejor práctica" que una razón técnica difícil y rápida (nota: podría estar equivocado al respecto). La razón es que si cada método de prueba individual es esencialmente autónomo, es más fácil crear diferentes conjuntos de prueba que realizarán las pruebas EXACTAS que necesita en lugar de ejecutar cada prueba en el ActivityTestCase en setUp().

Cuestiones relacionadas