2

是否有任何理由将对象创建放在实例变量声明中setUp()而不是实例变量声明中?

我已经在书中看到它这样做了,但是效果是一样的,我不确定它是否出于最佳实践的原因,因为早期版本的 Junit 没有为每个测试实例化对象(见这里),或者如果它只是一种风格。

4

1 回答 1

3

如果所讨论的对象的实例化不依赖于外部因素,那么立即声明和定义它是完全可以的。然而,它通常取决于其他因素(例如单例的初始化*),或者需要构造函数参数——其中一些甚至可能依赖于测试——或者它的初始化需要多个步骤。然后您必须将实例化推迟到设置方法,甚至推迟到测试方法本身。

请注意,JUnit 创建了一个测试类的新实例,因此无论如何都会为每个测试方法执行创建一个其数据成员的新实例。因此,如果您没有上述任何依赖项,从语义上讲,在声明点或在 setup 方法中实例化成员之间没有区别。

*这是不喜欢单身人士的原因之一。但是,您通常仍然拥有它们,尤其是在遗留代码中。

于 2010-07-08T14:48:18.607 回答