2016-09-12 11 views
0

Есть ли способ избежать использования var, когда инициализация переменной происходит внутри метода beforeAll (т. Е. После создания объекта)?Как избежать использования var с BeforeAll

Я хотел бы благоприятствовать неизменности ...

например https://github.com/holdenk/spark-testing-base/blob/master/src/main/1.3/scala/com/holdenkarau/spark/testing/SharedSparkContext.scala

+0

Посмотрите на это: http://eugenezhulenev.com/blog/2014/10/18/run-tests-instandstand один-искро-кластер/Кажется, все в порядке, хотя я не знаю, какие последствия могут иметь контексты, инициализированные в конструкторе. – Markon

ответ

0

Лучший способ для вас случае:

lazy val x: Type = _ 
override def beforeAll = { 
    x = //you code 
} 
+0

Не существует 'lazy var'. –

+0

это не скомпилировано для меня, оно все еще думает, что есть переназначение –

0

Вы можете использовать внешний объект компаньоном для достижения этой цели, Scala будет убедиться, что есть только один из них:

object SparkContextProvider { 
    val sparkContext: SparkContext = { 
     val sc = new SparkContext(conf) 
     setup(_sc) 
     sc 
    } 
} 

вам тестовый код будет содержать

trait SharedSparkContext extends SparkContextProvider { 
    val sc = SparkContextProvider.sparkContext 
}