de pruebas con SBT
No importa qué versión de SBT que desea utilizar, básicamente, que tienen que hacer los siguientes pasos:
- incluir su marco de pruebas deseado como prueba de la dependencia en su configuración del proyecto
- Cree una carpeta de pruebas dedicada dentro de su árbol de código fuente, normalmente src/test/scala, si no está presente todavía.
- 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.
¿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
@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