我有一个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成员?
答案 0 :(得分:2)
来自App
特征的scaladocs:
<强> ==注意事项== 强>
应该注意,这个特性是使用
DelayedInit
功能实现的,这意味着 该对象的字段之前不会被初始化 主要方法已经执行。
似乎你唯一的选择就是像在Java中那样声明主方法def main(args: Array[String]): Unit = ...
而不是扩展App
。