ScalaTest en sbt: ¿hay alguna manera de ejecutar una sola prueba sin etiquetas?
Sé que una sola prueba se puede ejecutar ejecutando, en sbt,
test-only *class -- -n Tag
¿Hay alguna forma de decirle a sbt/scalatest que ejecute una sola prueba sin etiquetas? Por ejemplo:
test-only *class -- -X 2
Significaría "ejecutar la segunda prueba en la clase. Sea lo que sea". Tenemos un montón de pruebas y nadie se molestó en etiquetarlas, así que ¿hay alguna manera de ejecutar una sola prueba sin que tenga una etiqueta?
3 answers
Esto ahora está soportado (desde ScalaTest 2.1.3) con:
testOnly *MySuite -- -z foo
Ejecutar solo las pruebas cuyo nombre incluya la subcadena "foo".
Para coincidencia exacta en lugar de subcadena, use -t
en lugar de -z
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-07 19:43:48
Quería añadir un ejemplo concreto para acompañar las otras respuestas
Necesita especificar el nombre de la clase que desea probar, por lo que si tiene el siguiente proyecto (este es un proyecto Play):
Puede probar solo las pruebas Login
ejecutando el siguiente comando desde la consola SBT:
test:testOnly *LoginServiceSpec
Si está ejecutando el comando desde fuera de la consola SBT, debe hacer lo siguiente:
sbt "test:testOnly *LoginServiceSpec"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-29 20:54:13
No veo una manera de ejecutar una sola prueba sin etiquetar dentro de una clase de prueba, pero estoy proporcionando mi flujo de trabajo, ya que parece ser útil para cualquiera que se encuentre con esta pregunta.
Desde una sesión de sbt:
test:test-only *YourTestClass
(El asterisco es un comodín, puede especificar la ruta completa com.example.specs.YourTestClass
.)
Se ejecutarán todas las pruebas dentro de esa clase de prueba. Presumiblemente usted está más preocupado con pruebas fallidas, así que corrija cualquier implementación fallida y luego ejecute:
test:test-quick
... que solo ejecutará pruebas que hayan fallado. (Repetir el comando test:test-only
ejecutado más recientemente será lo mismo que test:test-quick
en este caso, pero si divide sus métodos de prueba en clases de prueba apropiadas, puede usar un comodín para hacer que test:test-quick
sea una forma más eficiente de volver a ejecutar pruebas fallidas.)
Tenga en cuenta que la nomenclatura para la prueba en ScalaTest es una clase de prueba, no un método de prueba específico, por lo que se ejecutan todos los métodos sin etiquetar.
Si tiene demasiados métodos de prueba en una clase de prueba, divídalos en clases separadas o etiquetarlas apropiadamente. (Esto podría ser una señal de que la clase bajo prueba viola el principio de responsabilidad única y podría usar una refactorización.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-26 14:27:51