He heredado algunas pruebas JUnit escritas en scala que deben corregirse para usar la semántica @BeforeClass. Entiendo que la anotación @BeforeClass se debe aplicar solo a métodos estáticos. Entiendo que los métodos definidos en objetos "acompañantes" (a diferencia de las clases scala) son estáticos. ¿Cómo puedo hacer que se llame a un método de prueba una vez antes de los métodos de instancia individuales en una clase de prueba?¿Cómo se implementa la semántica @BeforeClass en una prueba JUnit 4 escrita en scala?
Respuesta
No especifica si se refiere heredado en el sentido de programación OO o el sentido de la palabra "tomado de otra persona".
En este último caso, le aconsejo que vuelva a escribir la cosa utilizando ScalaTest o Specs2 y la exponga como una prueba JUnit (ambos marcos lo admiten) para que se integre con cualquier otra herramienta y proceso usted ya tiene en su lugar.
object TestClass {
@BeforeClass
def stuff() {
// beforeclass stuff
}
}
class TestClass {
@Test
...
}
parece que funciona ...
que tenía que pasar a specs2 para implementar esta función con Scala. Solo agregue un ejemplo para ayudar a las personas con el mismo problema que el afiche original que aún no conocen las especificaciones2.
El modo specs2 utiliza el concepto de "paso" para lograr la configuración y el desmontaje del conjunto de pruebas. Si ejecuta con un JUnitRunner todos sus scripts Ant y IDE que usan JUnit todavía sabrán cómo ejecutarlo. Aquí hay un ejemplo usando una especificación mutable de specs2:
import org.specs2.mutable.Specification
import org.junit.runner.RunWith
import org.specs2.runner.JUnitRunner
@RunWith(classOf[JUnitRunner])
class MutableSpecs2ExampleTest extends Specification {
var firstStep: String = null
var secondStep: String = null
var thirdStep: String = null
//Steps are guaranteed to run serially
step{println("Loading Spring application context...");firstStep="Hello World"}
step{println("Setting up mocks...");secondStep = "Hello Scala"}
//The fragments should be run in parallel by specs2
"Some component Foo in my project" should{
" pass these tests" in {
println("Excersizing some code in Foo")
firstStep must startWith("Hello") and endWith("World")
}
" pass theses other tests" in {
println("Excersizing some other code in Foo")
firstStep must have size(11)
}
}
"Some component Bar in my project" should{
" give the correct answer" in {
println("Bar is thinking...")
secondStep must startWith("Hello") and endWith("Scala")
thirdStep must be equalTo null
}
}
step{println("Tearing down resources after tests...");thirdStep = "Hello Specs2"}
}
Y he aquí un ejemplo de una especificación no mutable:
import org.specs2.Specification
import org.specs2.specification.Step
import org.junit.runner.RunWith
import org.specs2.runner.JUnitRunner
@RunWith(classOf[JUnitRunner])
class Specs2ExampleTest extends Specification{
var firstStep: String = null
var secondStep: String = null
var thirdStep: String = null
def is =
"This is a test with some set-up and tear-down examples"^
p^
"Initialize" ^
Step(initializeDependencies())^
Step(createTestData())^
"Component Foo should" ^
"perform some calculation X " !testX^
"perform some calculation Y" !testY^
p^
"Tidy up" ^
Step(removeTestData())^
end
def testX = {
println("testing Foo.X")
firstStep must be equalTo("Hello World")
}
def testY = {
println("testing Foo.Y")
secondStep must be equalTo("Hello Scala")
thirdStep must be equalTo null
}
def initializeDependencies(){
println("Initializing Spring applicaiton context...")
firstStep = "Hello World"
}
def createTestData(){
println("Inserting test data into the db...")
secondStep = "Hello Scala"
}
def removeTestData(){
println("Removing test data from the db...")
println("Tearing down resources...")
thirdStep = "Hello Specs2"
}
}
- 1. JUnit 4 @BeforeClass & @AfterClass cuando se utilizan Suites
- 2. TestSuite Setup en jUnit 4
- 3. Cargando archivo de propiedades En JUnit @BeforeClass
- 4. ¿JUnit 3 tiene algo similar a @BeforeClass?
- 5. Conjunto de pruebas Junit 4 y clases de prueba individuales
- 6. ¿Cómo se prueba la unidad Scala en Eclipse?
- 7. @parameters en Junit 4
- 8. Cómo evitar la herencia en los casos de prueba JUnit?
- 9. Suites paramétricas en Junit 4?
- 10. JUnit 4: Configurar las cosas en un banco de pruebas antes de las pruebas se ejecutan (como método @BeforeClass de una prueba, sólo por un conjunto de pruebas)
- 11. Si yo ignoro una clase de prueba en JUnit4, ¿@BeforeClass aún se ejecuta?
- 12. Prueba JUnit para System.out.println()
- 13. ¿Cómo se prueba un controlador JavaFX con JUnit
- 14. ¿Cómo agregar una prueba JUnit 4 que no se extiende desde TestCase a TestSuite?
- 15. ¿Cómo se implementa el método Stream.CopyTo (Stream) en .NET 4?
- 16. ¿Cómo se implementa un Hadoop Mapper en Scala 2.9.0?
- 17. Ejecutar todas las pruebas en Junit 4
- 18. JUnit + Maven + Eclipse: ¿Por qué @BeforeClass no funciona?
- 19. ¿Cómo se implementa la interfaz IDynamicObject de C# 4?
- 20. Prueba de excepciones múltiples con anotaciones JUnit 4
- 21. No se puede ejecutar el caso de prueba JUnit 4 en el proyecto de Android Eclipse
- 22. ¿Cómo obtener el nombre del caso de prueba en JUnit 4 en tiempo de ejecución?
- 23. Autowire no funciona en la prueba junit
- 24. ¿Cómo ejecutar JavaScript en Ruby prueba escrita de Webdriver?
- 25. ¿Cómo uso JUnitPerf con JWebUnit y JUnit 4?
- 26. ¿Cómo puedo usar JUnit ExpectedException en Scala?
- 27. Semántica de rasgos abstractos en Scala
- 28. JUnit prueba una falla en la base de datos?
- 29. ¿Cómo evitar las afirmaciones múltiples en una prueba JUnit?
- 30. CPPUnit implementa una prueba para una excepción
que quería decir "heredado" en el sentido humano. Hoy he estado leyendo en ScalaTest y probablemente proceda en esa dirección. Gracias. –