【问题标题】:Is there any reason in Junit not to create your objects at the declaration?Junit 中是否有任何理由不在声明中创建对象?
【发布时间】:2010-07-08 14:40:40
【问题描述】:

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

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

【问题讨论】:

  • 你是如何编辑我的帖子的?
  • stackoverflow.com/faq - 什么是声誉?
  • 我已经读过了,但我猜还没有读到足够多的内容。下面是“打人的鼻子”和“用松来输”。

标签: unit-testing junit xunit


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2011-04-16
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    相关资源
    最近更新 更多