Sé que se puede ejecutar una sola prueba ejecutando, en SBT,
testOnly *class -- -n Tag
¿Hay alguna manera de decirle a sbt / scalatest que ejecute una sola prueba sin etiquetas? Por ejemplo:
testOnly *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, entonces, ¿hay alguna forma de ejecutar una sola prueba sin que tenga una etiqueta?

sbtentre comillas , por ejemplosbt "test-only *SingleTestSuite"Respuestas:
Esto ahora es compatible (desde ScalaTest 2.1.3) dentro del modo interactivo:
ejecutar solo las pruebas cuyo nombre incluye la subcadena "foo".
Para una coincidencia exacta en lugar de una subcadena, use en
-tlugar de-z.fuente
-tpara la coincidencia exacta? No puedo hacer que funcione.src/it), tienen que anteponeritatestOnly. Por ejemplo, en la línea de comandos:sbt "it:testOnly *MyIntegrationTestSuite".whenyshouldrepetir entre pruebas. Para elegir una prueba específica, necesito decir "nombre contiene esto Y aquello".Quería agregar un ejemplo concreto para acompañar las otras respuestas
Debe especificar el nombre de la clase que desea probar, por lo que si tiene el siguiente proyecto (este es un proyecto de Play):
Puede probar solo las
Loginpruebas ejecutando el siguiente comando desde la consola SBT:Si está ejecutando el comando desde fuera de la consola SBT, haría lo siguiente:
fuente
sbt "test:testOnly *LoginServiceSpec"testOnly *LoginServiceSpecy afuera:sbt "testOnly *LoginServiceSpec"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:
(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 por las pruebas fallidas, corrija las implementaciones fallidas y luego ejecute:
... que solo ejecutará pruebas que fallaron. (Repetir el
test:testOnlycomando ejecutado más recientemente será el mismo quetest:testQuicken este caso, pero si divide sus métodos de prueba en clases de prueba apropiadas, puede usar un comodín para hacertest:testQuickuna forma más eficiente de volver a ejecutar las 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 márquelos adecuadamente. (Esto podría ser una señal de que la clase bajo prueba está violando el principio de responsabilidad única y podría usar una refactorización).
fuente
*YourTestClassdebe ser el nombre de la clase. No es el nombre del archivo.Solo para simplificar el ejemplo de Tyler.
test:-prefijo no es necesario.Entonces según su ejemplo:
En la
sbtconsola:Y en la terminal:
fuente
Aquí está la página Scalatest sobre el uso del corredor y la discusión extendida sobre las opciones
-ty-z.Esta publicación muestra qué comandos funcionan para un archivo de prueba que utiliza
FunSpec.Aquí está el archivo de prueba:
Este comando ejecuta las cuatro pruebas en el
iLikebloque describe (desde la línea de comando SBT):También puede usar comillas, por lo que esto también funcionará:
Esto ejecutará una sola prueba:
Esto ejecutará las dos pruebas que comienzan con "funciona con":
No puedo obtener la
-topción de ejecutar ninguna prueba en elCardiBSpecarchivo. Este comando no ejecuta ninguna prueba:Parece que la
-topción funciona cuando las pruebas no están anidadas endescribebloques. Echemos un vistazo a otro archivo de prueba:-tse puede usar para ejecutar la prueba individual:-zTambién se puede utilizar para ejecutar la prueba única:Consulte este repositorio si desea ejecutar estos ejemplos.
fuente