2017-05-25 1 views
0

Comment accéder à TestSuiteParams dans before?Accès le plus rapide aux propriétés du projecteur

je cours mes tests avec Runner

import org.scalatest.tools.Runner 
val runnerArray: Array[String] = Array("-s", "com.inn.org.functional.Stateless", "-Dmonth=1")  
Runner.run(runnerArray) 

J'ai la propriété month à TestSuiteParams Je voudrais accéder à mon before mais je ne suis pas sûr de savoir comment y accéder.

Voici comment mes tests sont mis en forme jusqu'à présent

class Stateless extends fixture.FeatureSpec with BeforeAndAfter { 

    before("before") { 
     // I want to access TestSuiteParams HERE 
     // but I cannot! 
    } 

    feature("feature") { 
     scenario() {TestSuiteParams => 
      // this piece works! I can access .month! 
      assert(TestSuiteParams.month != null) 
     } 
    } 

    def withFixture(test: OneArgTest): org.scalatest.Outcome = { 
     val hiveContext = new HiveContext(sc) 
     test(TestSuiteParams(hiveContext, 1) 
    } 

    case class TestSuiteParams(hiveContext: HiveContext, month: String) 
} 

Répondre

1

vous devrez injecter la carte de configuration dans votre classe de test comme indiqué ci-dessous.

import org.scalatest.{ConfigMapWrapperSuite, WrapWith} 

@WrapWith(classOf[ConfigMapWrapperSuite]) 
class Stateless(configMap: Map[String, Any]) extends fixture.FeatureSpec with BeforeAndAfter { 
    before("before") { 
     configMap("month") 
    } 
} 
+0

Essayé, mais je reçois ceci: http://dpaste.com/040S8G3 – Liondancer

+0

Il est très probable que le constructeur de votre TestClass échoue. pouvez-vous partager votre nouveau code mis à jour? –

+0

Bien sûr, merci d'avoir regardé cela. J'ai fait d'autres recherches sur mon problème et j'ai modifié certains de mes codes sur http://dpaste.com/0FC1NJ3 Cependant, quand j'essaie de l'exécuter, la seule sortie que j'obtiens est '*** RUN ABORTED *** ' – Liondancer