刚开始使用Scala进行单元测试,并提出了这个基本问题。
class Test {
ClassToBeTested testObject;
@Before
void initializeConstructor() {
testObject = new ClassToBeTested(//Blah parameters);
}
@Test
//Blah
}
Java中的上述示例显示我可以声明类型为ClassToBeTested
的对象并稍后对其进行初始化。这可以在Scala中完成吗?我试过了
class Test {
var testObject = new ClassToBeTested()
@Before def initializeConstructor() {
//I do not know how to proceed here!!!!!!
}
@Test def testOne() {
//Some test
}
}
我不想在testOne()
内做所有事情,因为我想在不同的测试中使用该对象。构造函数的参数是模拟的,在JUnit
我知道如果我在全局而不是在@Before
内初始化一个对象,则不会初始化模拟。
答案 0 :(得分:8)
以下是如何制作它:
class Test {
var testObject: ClassToBeTested = _
@Before
def initializeConstructor() {
testObject = new ClassToBeTested()
}
@Test
def testOne() {
//Some test
}
}
下划线初始化More。
您还可以在Scala编程的第18.2 Reassignable variables and properties节中了解更多相关信息。这是引用,对您有所帮助:
更确切地说,字段的初始值设定项“= _”为该字段指定零值。零值取决于字段的类型。数字类型为0,布尔值为false,引用类型为null。这与在没有初始化程序的Java中定义相同变量的情况相同。
请注意,您不能简单地在Scala中省略“= _”初始值设定项。如果你写了:
var celsius: Float
这将声明一个抽象变量,而不是未初始化的变量