2010-07-08 31 views
2

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

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

+0

您如何编辑我的文章? – orbfish 2010-07-12 15:54:08

+0

http://stackoverflow.com/faq - 什么是信誉? – 2010-07-13 12:28:34

+0

我已经读过,但是我没有读得太远。它在那里与“打在鼻子里的人”和“使用松散丢失”。 – orbfish 2010-07-14 19:28:41

回答

3

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

请注意,JUnit会创建一个新的测试类实例,因此无论如何都会为每个测试方法执行创建其数据成员的新实例。所以如果你没有上面提到的依赖关系,语义上在声明或者设置方法中实例化成员之间没有区别。

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

+0

谢谢,这很有道理 – orbfish 2010-07-12 21:31:02

相关问题