2012-04-24 12 views
8

Ich möchte einen Test schreiben, der einen Remote-Server aufruft und die Antwort validiert, weil sich der Server ändern kann (er steht nicht unter meiner Kontrolle). Um dies zu tun Ich denke, ich würde give it a tag (RemoteTest) und dann exclude it when calling the runner:Ausschließen eines ScalaTest-Tests beim Aufruf meiner Tests aus sbt

sbt> test-only * -- -l RemoteTest 

Wenn jedoch tun dies alle meine Tests ausgeführt werden, einschließlich RemoteTest. Wie rufe ich den Läufer aus sbt heraus, so dass er ausgeschlossen ist?

+0

Während es auf Ihre Frage in keiner Weise beantwortet, ist es gute Praxis, Stubs und [Mocks] (http://scalamock.org/) für solche sich ändernden Dinge zu verwenden. –

+0

Ich grundsätzlich tun. Aber ich möchte immer noch wissen, ob sich die API bei mir ändert. – pr1001

Antwort

10

Wenn Sie folgende Voraussetzungen erfüllt sein: -

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) 
    } 
} 

DbTest Tag auszuschließen, würden Sie tun: -

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

Beachten Sie, dass Sie den vollständigen Tag-Namen enthalten müssen. Wenn es immer noch nicht für Sie funktioniert, würde es Ihnen etwas ausmachen, einen Teil des Quellcodes zu teilen, der nicht funktioniert?

+0

Ha, so einfach! Ich habe total vermisst, dass es der voll qualifizierte Name sein muss. – pr1001

Verwandte Themen