我正在尝试使用scalatest来测试这样的应用程序:
object Main extends App {
val name = "Greg"
}
class JunkTests extends FunSpec with MustMatchers {
describe("Junk Tests") {
it("Junk-1 -- Must do stuff") {
println("Name: "+Main.name)
// some test here
}
}
}
我的名字输出始终为空。如何让我的主要对象在测试期间使用它的设施?在实际使用中,我有一个应用程序,它是一个Http服务器,我想发送它消息,但现在它从未初始化,所以服务器永远不会启动。这个简单的例子表明Main永远不会被初始化。
答案 0 :(得分:12)
应该注意的是,这个特性是使用 DelayedInit功能,表示对象的字段将 在main方法执行之前尚未初始化。
所以你可以:
final val name = "Greg"
def name = "Greg"
lazy
val:lazy val name = "Greg"
(所以在这种情况下,以及之前的版本,无论初始化顺序如何)