如何在不运行App(main)的情况下初始化App成员?

时间:2016-04-06 20:05:56

标签: java scala initialization

我有一个MyClass课,它扩展了App。问题是,在MyClass内部,我需要初始化变量myValue,而不是实际运行应用程序。这是因为我想以非交互方式运行MyClass方法的单元测试。

class MyClass extends App {
    val myValue = "A value that I need to run the unit tests"

    def myMethod: Unit = "A method that needs to be unit-tested and uses " + myValue

    /* ... main (interactive) code that is not supposed to run in the unit test... */
}

所以,问题是:如何在不运行应用程序(主要)的情况下初始化App成员?

1 个答案:

答案 0 :(得分:2)

来自App特征的scaladocs:

  

<强> ==注意事项==

     

应该注意,这个特性是使用DelayedInit功能实现的,这意味着   该对象的字段之前不会被初始化   主要方法已经执行。

似乎你唯一的选择就是像在Java中那样声明主方法def main(args: Array[String]): Unit = ...而不是扩展App