2012-04-24 11 views
8

Quiero escribir una prueba que llame a un servidor remoto y valide la respuesta porque el servidor puede cambiar (no está bajo mi control). Para ello figura que yo había give it a tag (RemoteTest) y luego exclude it when calling the runner:Excluyendo una prueba ScalaTest cuando llamo mis pruebas desde sbt

sbt> test-only * -- -l RemoteTest 

Sin embargo, al hacer esto todos mis pruebas se ejecutan, incluyendo RemoteTest. ¿Cómo llamo al corredor desde dentro de sbt para que se excluya?

+0

Si bien no responde a su pregunta de ninguna manera, es una buena práctica usar stubs y [mocks] (http://scalamock.org/) para tales cosas cambiantes. –

+0

Básicamente lo hago. Pero aún quiero saber si la API me cambia. – pr1001

Respuesta

10

Si usted tiene lo siguiente: -

package com.test 

import org.scalatest.FlatSpec 
import org.scalatest.Tag 

object SlowTest extends Tag("com.mycompany.tags.SlowTest") 
object DbTest extends Tag("com.mycompany.tags.DbTest") 

class TestSuite extends FlatSpec { 

    "The Scala language" must "add correctly" taggedAs(SlowTest) in { 
     val sum = 1 + 1 
     assert(sum === 2) 
    } 

    it must "subtract correctly" taggedAs(SlowTest, DbTest) in { 
    val diff = 4 - 1 
    assert(diff === 3) 
    } 
} 

Para excluir la etiqueta dbTest, puede hacer: -

test-only * -- -l com.mycompany.tags.DbTest 

Tenga en cuenta que tendrá que incluir el nombre de la etiqueta completa. Si todavía no funciona para ti, ¿te importaría compartir parte del código fuente que no funciona?

+0

¡Ha, tan simple! Me extrañé por completo de que tenga que ser el nombre completo. – pr1001

Cuestiones relacionadas