2011-06-05 7 views
7

¿Cómo creo una prueba de unidad simple para mi aplicación usando la función de prueba SBT?Funcionalidad de prueba básica en SBT

Espero que la respuesta sea que puedo escribir un único archivo en src/test/scala para mi proyecto que importa algún paquete de prueba especial de SBT, lo que hace que escribir pruebas sea tan fácil como escribir un solo método.

El tutorial ExampleSbtTest parece estar haciendo algo más complicado de lo que necesito, y no puedo encontrar nada más simple en la página SBT GoogleCode.

+0

¿Está utilizando sbt 0.7 o el 0.10 revisado? Si ya está en 0.10 o si considera cambiar a 0.10, consulte https://github.com/harrah/xsbt/wiki/Testing. Además, ¿qué marco de prueba quieres usar? – Steffen

+0

@Steffen - Creo que estoy en sbt 0.7. No estoy vinculado a un marco de prueba específico, ya que no los he usado extensamente. El que he usado un poco es ScalaCheck. – dsg

Respuesta

12

de pruebas con SBT

No importa qué versión de SBT que desea utilizar, básicamente, que tienen que hacer los siguientes pasos:

  1. incluir su marco de pruebas deseado como prueba de la dependencia en su configuración del proyecto
  2. Cree una carpeta de pruebas dedicada dentro de su árbol de código fuente, normalmente src/test/scala, si no está presente todavía.
  3. Como siempre: escribir sus ensayos, características ...

Esos pasos básicos son idénticos para la rama 0.7 SBT (que es el de Google de código) y la corriente rama SBT 0.10 (ahora desarrollado y documentado en github). Sin embargo, existen pequeñas diferencias sobre cómo definir las dependencias de prueba ya que 0.10 proporciona un nuevo método de configuración rápida que no está presente en 0.7.

Definición de la dependencia para SBT 0.7

Así es como se crea una prueba básica (basado en scalacheck) con SBT 0.7. Cree un nuevo proyecto sbt 0.7 llamando a sbt en una carpeta vacía. Cambie a la carpeta proyecto creado automáticamente y crear una nueva carpeta de compilación

# cd [your-project-root]/project 
# mkdir build 

cambio en la carpeta de construcción de nueva creación y crear su primer proyecto fichero de construcción Project.scala con el contenido siguientes aparatos:

class Project(info: ProjectInfo) extends DefaultProject(info) { 

    val scalacheck = "org.scala-tools.testing" %% "scalacheck" % "1.9" % "test" 

} 

Dado que para 0.7 la carpeta de prueba se crea automáticamente, puede comenzar a escribir su primera prueba de inmediato. Vaya al párrafo "Crear una prueba simple".

Definición de la dependencia para SBT 0,10

Para 0.10 se puede utilizar la consola de SBT para agregar la dependencia. Simplemente comienza a sbt en el directorio del proyecto e introduzca los siguientes comandos:

conjunto libraryDependencies + = "org.scala-tools.testing" %% "scalacheck" % "1.9" "prueba" % sesión Guardar

Puede cerrar la consola sbt y echar un vistazo a su proyecto build.sbt file.Como puede ver fácilmente la línea anterior de libraryDependencies se agregó a la configuración rápida de sus proyectos.

Dado que 0,10 no crea las carpetas de origen automáticamente. Hay que crear la carpeta de pruebas por su cuenta:

# cd [project-root] 
# mkdir -p src/test/scala 

Eso es todo lo que se necesita para empezar a trabajar con 0,10. Además, la documentación sobre las pruebas con 0.10 es mucho más detallada que la anterior. Consulte la página testing wiki para obtener más detalles.

Crear un simple análisis de scalacheck

Crear el archivo de prueba siguiente src// Scala/StringSpecification.scala (tomado de la página scalacheck) Prueba:


import org.scalacheck._ 

object StringSpecification extends Properties("String") { 
    property("startsWith") = Prop.forAll((a: String, b: String) => (a+b).startsWith(a)) 

    property("endsWith") = Prop.forAll((a: String, b: String) => (a+b).endsWith(b)) 

    // Is this really always true? 
    property("concat") = Prop.forAll((a: String, b: String) => 
     (a+b).length > a.length && (a+b).length > b.length 
    ) 

    property("substring") = Prop.forAll((a: String, b: String) => 
     (a+b).substring(a.length) == b 
    ) 

    property("substring") = Prop.forAll((a: String, b: String, c: String) => 
     (a+b+c).substring(a.length, a.length+b.length) == b 
    ) 
} 

Como ya se ha indicado esta la comprobación básica fallará para la especificación "concat", pero esos son los pasos de prueba básicos necesarios para comenzar con las pruebas y sbt. Simplemente adapte la dependencia incluida si desea usar otro marco de prueba.

ejecutar las pruebas

Para ejecutar la prueba, abra la consola de SBT y escriba

> test 

que se ejecutará todas las pruebas existentes en su src/test árbol no importa si esas son pruebas basadas en Java o scala. Por lo tanto, puede reutilizar fácilmente las pruebas existentes de su unidad java y convertirlas paso a paso en scala.

Cuestiones relacionadas