Acabo de descargar Android Studio, que se basa en Intellij Idea.
¿Cómo se crearían pruebas?
Noto que hay una opción para crear un módulo de prueba, pero esto no parece hacer nada, solo crea un nuevo proyecto con src
También intenté presionar la tecla de acceso rápido CTRL + AlT + T que permite crear pruebas unitarias en una clase existente, pero parece querer colocarla en el proyecto actual. Por supuesto, esto no ayuda con TDD
¿Alguien tiene alguna experiencia aquí?
Respuestas:
Esta respuesta es para personas que recién están comenzando con las pruebas de Android. Proporcionaré dos ejemplos simples para ayudarlo a ver cómo funcionan las pruebas. Si lo sigue durante los próximos 10 minutos, estará listo para comenzar a agregar sus pruebas a su propia aplicación. Creo que te sorprenderá lo fácil que es. Ciertamente lo estaba.
Introducción a las pruebas de Android
Hay dos tipos diferentes de pruebas que realizará.
Context
es un ejemplo).Cree un nuevo proyecto y verá las siguientes carpetas predeterminadas.
Todo ya está ahí y esperando a que cree sus pruebas. ¡Ya está todo configurado!
Cómo crear pruebas unitarias locales
Abra el
ExampleUnitTest
archivo que se muestra en la imagen de arriba. debería verse algo como esto:Presione la flecha verde doble para ejecutar todas las pruebas o la flecha verde única para ejecutar solo una. (En este caso, solo hay una prueba, por lo que ambos hacen lo mismo).
Debería aprobarse (siempre que
2 + 2
esté quieto4
cuando esté leyendo esta respuesta). ¡Felicitaciones, acaba de ejecutar su primera prueba!Haciendo tu propia prueba
Escribamos nuestra propia prueba. Primero agregue esta clase a su proyecto de aplicación principal para que tengamos algo que probar:
Ahora cambie el
addition_isCorrect()
método en la clase de prueba para que sea como el siguiente código (o simplemente agregue otro método con un nombre diferente):Ejecútelo de nuevo y debería verlo pasar. ¡Felicitaciones, acaba de crear su propia primera prueba! (Bueno, supongo que técnicamente era mío, pero, oye, lo suficientemente cerca. Lo que es mío es tuyo).
Cómo crear pruebas instrumentadas
Abra el
ExampleInstrumentedTest
archivo. debería verse algo como esto:Presiona uno de esos botones verdes nuevamente.
Siempre que tenga un dispositivo real conectado o el emulador configurado, debería haberlo iniciado y ejecutar su aplicación. ¡Felicitaciones, acaba de ejecutar su primera prueba instrumentada!
Haciendo tu propia prueba
Las pruebas instrumentadas utilizan Espresso para ejecutar las pruebas. Es como su propio pequeño usuario de robot que puede probar su aplicación. Puede decirle que haga algo como presionar un botón o leer las propiedades de un TextView.
Puede escribir las instrucciones sobre cómo hacer la prueba a mano, pero como estamos comenzando, usemos la función de grabación automática . Es super simple.
Primero agregue un botón a su interfaz de usuario para que tengamos algo con lo que trabajar. Hice esto:
Luego presione Ejecutar> Grabar prueba de espresso en el menú.
Después de que comience, haga clic en el botón en el emulador y luego, para terminar, elija Aceptar en el cuadro de diálogo Grabar. Debería generar automáticamente el siguiente código de prueba.
¡Excelente! ¡Acaba de crear su primera prueba instrumentada! Eso fue muy fácil. Probablemente debería agregar una afirmación para que sea una prueba real, pero eso también es bastante fácil de hacer con la grabadora. Mira este video para profundizar un poco más.
Estudio adicional
Primero veía los videos y luego leía la documentación. Todo es muy útil. El último enlace es a una serie de artículos que cubren algunas cosas importantes en las que pensar al elegir qué probar.
fuente
/app
, sin embargo, si ejecuto desde la línea de comandos de Gradle (o CI), entonces es _root . (Idealmente, me gustaría acceder aassets
carpetas específicas cuando se ejecuta de cualquier manera).test/resources
y poner archivos allí, por ejemplotest.txt
y acceder a ellos congetClass().getClassLoader().getResource("test.txt")
. Decidí que acceder a los activos de APK directamente es probablemente una mala idea, así que me ocuparé de eso copiando los archivos para probarlos en un paso de compilación o en un proceso de actualización externo. Quedan algunas preguntas sobre las diferentes versiones de Gradle, pero aún no las he enfrentado.Editar: A partir de 0.1.8, esto ahora es compatible con el IDE . Siga las instrucciones allí, en lugar de usar las instrucciones a continuación.
Siguiendo la Guía del usuario del complemento de Gradle para Android, pude hacer que las pruebas funcionaran en la línea de comando realizando los siguientes pasos en un proyecto recién creado (usé el paquete predeterminado 'com.example.myapplication'):
Esto ejecutó mis pruebas y colocó los resultados de la prueba en MyApplicationProject / MyApplication / build / reports / instrumentTests / connected. Soy nuevo en probar aplicaciones de Android, pero parece que funciona bien.
Desde dentro del IDE, es posible probar y ejecutar la misma clase de prueba. Necesitarás
Sin embargo, esto falla (la ruta de clase utilizada cuando se ejecutan las pruebas falta el directorio de salida de la prueba). Sin embargo, no estoy seguro de que esto funcione independientemente, ya que tengo entendido que se requiere un ejecutor de pruebas específico de Android.
fuente
Sugeriría usar el archivo gradle.build .
Agregue un directorio src / androidTest / java para las pruebas (como Chris comienza a explicar)
Abra el archivo gradle.build y especifique allí:
Presiona "Sincronizar proyecto con archivo Gradle" (en el panel superior). Ahora debería ver una carpeta "java" (dentro de "androidTest") es de color verde.
Ahora puede crear allí cualquier archivo de prueba y ejecutarlo.
fuente
Creo que esta publicación de Rex St John es muy útil para las pruebas unitarias con Android Studio.
(fuente: rexstjohn.com )
fuente
Android Studio v.2.3.3
Resalte el contexto del código que desea probar y use la tecla de acceso rápido:
CTRL
+SHIFT
+T
Utilice la interfaz de diálogo para completar su configuración.
Se supone que el marco de prueba refleja el diseño del paquete de su proyecto para obtener mejores resultados, pero puede crear pruebas personalizadas manualmente, siempre que tenga el directorio y la configuración de compilación correctos.
fuente
A partir de ahora (estudio 0.61) es suficiente mantener la estructura adecuada del proyecto. No es necesario crear un proyecto de prueba separado como en eclipse (ver más abajo).
fuente
Android Studio sigue evolucionando, por lo que las respuestas anteriores eventualmente dejarán de ser aplicables. Para la versión actual de Android Studio 1.2.1.1, hay un buen tutorial sobre pruebas en:
http://evgenii.com/blog/testing-activity-in-android-studio-tutorial-part-1/
fuente
Uno de los principales cambios que parece es que con Android Studio la aplicación de prueba está integrada en el proyecto de la aplicación.
No estoy seguro de si esto ayuda a su problema específico, pero encontré una guía sobre cómo hacer pruebas con un proyecto de Gradle. Guía del usuario de Android Gradle
fuente
La forma más fácil que encontré es la simplificada en mi siguiente publicación de blog :
¡Buena suerte haciendo que su código sea más legible, fácil de mantener y probado!
fuente
Android Studio ha sido una especie de objetivo en movimiento, primero fue una vista previa para desarrolladores y ahora está en versión beta. La ruta para las clases de prueba en el proyecto ha cambiado con el tiempo, pero no importa qué versión de AS esté utilizando, la ruta se declara en su archivo .iml. Actualmente, con la versión 0.8.3, encontrará lo siguiente dentro del archivo iml interno:
El archivo .iml le indica dónde colocar sus clases de prueba.
fuente
A partir de Android Studio 1.1, tenemos soporte oficial (experimental) para escribir pruebas unitarias (Roboelectric también funciona).
Fuente: https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support
fuente
Agregue debajo de lib dentro del archivo gradle
Cree la clase HomeActivityTest dentro del directorio androidTest y, antes de ejecutar la prueba, agregue la cadena flurry_api_key y sender_id dentro del archivo de recursos de cadena y cambie el valor para el caso de error y éxito.
fuente