¿Puedo tener dependencias entre las especificaciones de scalaTest de modo que si una prueba falla, todas las pruebas que dependen de ella se saltan?hay un mecanismo scalaTest similar a TestNg Anotación dependsOnMethods
Respuesta
No conozco una solución preparada. Pero puedes escribir fácilmente tus propios accesorios.
consulte "Redacción características del dispositivo apilables" en el javadoc de la Suite trait
Tal dispositivo podría, por ejemplo, sustituir todas las ejecuciones de prueba después de la primera con llamadas a pending
No añadí esa característica de TestNG porque en ese momento no tenía ningún caso de uso convincente para justificarlo. Desde entonces, he recopilado algunos casos de uso y estoy agregando una función a la próxima versión de ScalaTest para abordarla. Pero no serán pruebas dependientes, solo una forma de "cancelar" una prueba basada en una precondición no satisfecha.
Mientras tanto, lo que puede hacer es simplemente usar declaraciones Scala if para registrar solo las pruebas si se cumple la condición, o para registrarlas como ignoradas si prefiere verlas en salida. Si está utilizando Spec, que sería algo como:
if (databaseIsAvailable) {
it("should do something that requires the database") {
// ...
}
it ("should do something else that requires the database") {
}
}
Esto sólo funcionará si se cumple la condición de seguro en el momento de la construcción de pruebas. Si se supone que la base de datos, por ejemplo, debe iniciarse mediante un método beforeAll, tal vez, entonces necesitaría hacer el control dentro de cada prueba. Y en ese caso, podría decir que está pendiente. Algo como:
it("should do something that requires the database") {
if (!databaseIsAvailable) pending
// ...
}
it("should do something else that requires the database") {
if (!databaseIsAvailable) pending
// ...
}
Después de leer el scaladoc, todavía no veo cómo establezco las condiciones previas. Precisamente, ¿cómo configuro una condición cuando una prueba tiene éxito para que otras suites puedan hacer referencia a ella? – user44242
No puedo encontrar ninguna referencia a esa característica aún, por casualidad, ¿se ha implementado esto? –
Creo que la característica a la que se refiere Bill es 'assume (Boolean)'. Si la suposición falla, una prueba se muestra como cancelada. Esto es con ScalaTest 2.2.1. – akauppi
Aquí hay un rasgo de Scala que hace que todas las pruebas en el conjunto de pruebas fallen, si falla alguna prueba.
(Gracias por la sugerencia, Jens Schauder (que ha publicado otra respuesta a esta pregunta).)
Pros: Simple de entender las dependencias de la prueba.
Contras: No muy personalizable.
Lo uso para mis pruebas automáticas del navegador. Si algo falla, generalmente no tiene sentido continuar interactuando con la GUI ya que está en un estado "desordenado".
Licencia: Dominio público (CC0 de Creative Common), o (a su opción) la licencia de MIT.
import org.scalatest.{Suite, SuiteMixin}
import scala.util.control.NonFatal
/**
* If one test fails, then this traits cancels all remaining tests.
*/
trait CancelAllOnFirstFailure extends SuiteMixin {
self: Suite =>
private var anyFailure = false
abstract override def withFixture(test: NoArgTest) {
if (anyFailure) {
cancel
}
else try {
super.withFixture(test)
}
catch {
case ex: TestPendingException =>
throw ex
case NonFatal(t: Throwable) =>
anyFailure = true
throw t
}
}
}
Puede utilizar rasgo org.scalatest.CancelAfterFailure
para cancelar pruebas restantes después del primer fracaso:
import org.scalatest._
class MySpec extends FunSuite with CancelAfterFailure {
test("successfull test") {
succeed
}
test("failed test") {
assert(1 == 0)
}
test("this test and all others will be cancelled") {
// ...
}
}
- 1. TestNG dependsOnMethods de clase diferente
- 2. TestNG omitiendo pruebas: ¿por qué?
- 3. ¿Hay un mecanismo general para finalizar los eventos en node.js?
- 4. ¿Hay algo similar a WebClient.DownloadString en Java?
- 5. primavera inyección de dependencias con TestNG
- 6. ¿Hay un código abierto de correo electrónico similar a mailchimp
- 7. ¿Hay un aspecto similar a C# para Linux?
- 8. ScalaTest y Maven: comenzando
- 9. ¿Hay un mecanismo de tiempo de espera en MPI?
- 10. ¿Usando la anotación @Parameter o ITestContext para leer el archivo de configuración TestNG?
- 11. ¿Hay algún mecanismo de enlace de datos disponible para iOS?
- 12. ¿Tiene Python un mecanismo de control similar al CountDownLatch de Java?
- 13. Scalatest: cómo probar println
- 14. ¿Hay alguna forma de suprimir las advertencias en C#, similar a la anotación de @SuppressWarnings de Java?
- 15. Iniciación a la Scala, Scalatest, y Maven
- 16. ¿Hay un paquete de administración de usuarios de Java similar a la aplicación de autenticación Django?
- 17. Posible pasar parámetros a TestNG DataProvider?
- 18. ¿Hay alguna consola interactiva similar a Python para Java?
- 19. ¿Hay alguna función en Perl similar a GetType() en C#?
- 20. ¿Hay una biblioteca similar a pyparsing en Java?
- 21. ¿Hay una herramienta similar a YSlow para IE7?
- 22. ¿Hay una interfaz similar a Callable pero con argumentos?
- 23. ¿Hay algún objetivo maven que sea similar a 'dist'?
- 24. ¿Hay algo similar a LINQ en Objective-C?
- 25. ¿Hay otros lenguajes de propósito similar a XML?
- 26. ¿Hay una consola/editor Java similar a GroovyConsole?
- 27. ¿Hay alguna herramienta similar a una pelusa para MSBuild?
- 28. TestNG y Spring 3
- 29. ¿Hay una utilidad similar a Spy ++ para WPF?
- 30. ¿Existe un serializador CSV? (similar a XmlSerializer)
Una de las reglas importantes de la prueba es la siguiente: Las pruebas no deben depender unos de otros. (No tengo idea de si es posible tener dependencias en ScalaTest) – agilesteel
No deberían, pero a veces la configuración de una prueba es tan cara que no se puede evitar. En otras ocasiones, prueba sistemas externos para asegurarse de que se comporten como se acordó. Si una primera prueba prueba la disponibilidad de un sistema falla, no hay necesidad de probar los detalles. –
Es posiblemente una regla importante de "pruebas unitarias" pero las pruebas dependientes son muy útiles para las pruebas funcionales, por varias razones (reutilización del estado costoso, informes precisos, evitación de burlas, etc.). –