2016-05-10 8 views
0

Ich habe a library in dem ich a very useful class in src/test/scala erstellt habe. Wie kann ich diese Klasse Benutzern zur Verfügung stellen, damit sie diese Klasse in ihren Tests verwenden können?Implementieren von Code im Test

Wenn ich diese Testklasse nach src/main/scala migriere und sie dann deploye, muss meine Bibliothek das Testframework als Abhängigkeit haben.

Wenn ich die Artefakte im Test bereitstellen, werden auch die Tests meiner Bibliothek gepackt, was dumm ist, da Leute, die meine Bibliothek benutzen, keinen Zugriff auf die Bibliothekstests haben müssen.

+0

Ich bin nicht sicher, ich verstehe, was es ist, Sie finden vor allem „nützlich“ zu dieser Klasse, und, vor allem, über die scalatest 'Futures', die es verwendet ... Den' f.futureValue' zu ​​nennen und nicht 'Await.result (f)' kann es nicht sein, oder? – Dima

+0

'Await.result' ist synchron, wo ScalaTest' futureValue' asynchron ist. Die Nützlichkeit liegt in der Tatsache, dass ich die 'PatienceConfig' nicht neu definieren muss. –

+0

Asynchron? Was meinst du damit? In meinem Buch, um "asynchron" zu sein, muss etwas eine "Zukunft" zurückgeben ... aber du hast bereits eine "Zukunft". Sie müssen eindeutig eine andere Bedeutung für diesen Begriff haben? – Dima

Antwort

2

Nur die Abhängigkeit von scalatest loszuwerden, müssen Sie nicht das Zeug:

trait VeryUsefulTrait { 

    implicit class RichExpect[T](expect: Expect[T]) { 
     val timeout = expect.settings.timeout + 1.second 
     def failedFutureValue: Throwable = Await.result(expect.run().failed, timeout) 
     def futureValue: T = Await.result(expect.run(), timeout) 
     def whenReady[U](f: T => U): U = f(Await.result(expect.run(), timeout)) 
    }