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?
sbt
entre 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
-t
lugar de-z
.fuente
-t
para la coincidencia exacta? No puedo hacer que funcione.src/it
), tienen que anteponerit
atestOnly
. Por ejemplo, en la línea de comandos:sbt "it:testOnly *MyIntegrationTestSuite"
.when
yshould
repetir 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
Login
pruebas 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 *LoginServiceSpec
y 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:testOnly
comando ejecutado más recientemente será el mismo quetest:testQuick
en este caso, pero si divide sus métodos de prueba en clases de prueba apropiadas, puede usar un comodín para hacertest:testQuick
una 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
*YourTestClass
debe 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
sbt
consola:Y en la terminal:
fuente
Aquí está la página Scalatest sobre el uso del corredor y la discusión extendida sobre las opciones
-t
y-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
iLike
bloque 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
-t
opción de ejecutar ninguna prueba en elCardiBSpec
archivo. Este comando no ejecuta ninguna prueba:Parece que la
-t
opción funciona cuando las pruebas no están anidadas endescribe
bloques. Echemos un vistazo a otro archivo de prueba:-t
se puede usar para ejecutar la prueba individual:-z
También se puede utilizar para ejecutar la prueba única:Consulte este repositorio si desea ejecutar estos ejemplos.
fuente