JUnit是否将随机属性设置为null?

时间:2015-04-16 15:52:23

标签: java junit

我有一系列完全相互依赖的测试方法。我一直遇到将对象设置为默认状态或仅将其属性更改为null的问题。在正常的程序中,没有这样的事情发生过。将事物随机设置为最终似乎有所帮助,但我不能仅仅因为测试而修改生产代码。

将属性设置为final也意味着它不在我的代码中 - 如果我的代码改变了这些,编译器就不会编译它(我的代码中没有反射)。

在我深入研究之前,请你告诉我JUnit是否应该做这样的事情?如果是,我可以阅读哪些规则?

3 个答案:

答案 0 :(得分:6)

JUnit不会随机向null设置任何内容。它将事物设置为null非常确定:在运行每个测试方法之前,会创建一个新的测试类实例。因此,所有实例变量都设置为默认值,对象引用为null

单元测试不应相互依赖。它们必须以任何顺序运行。如果您有相互依赖的部件,则必须将它们放在相同的测试方法中(或者以正确的顺序从测试方法中调用的单独的非测试方法)。

如果要初始化所有测试所需的数据,可以使用@Before注释(此方法将在每个测试方法之前运行)或使用@BeforeClass注释来注释方法(然后在所有测试方法之前运行此方法一次)。

答案 1 :(得分:1)

如果要在每次测试之前初始化某些对象,请尝试将注释@Before用于初始化函数。

请参阅http://junit.sourceforge.net/javadoc/org/junit/Before.html

答案 2 :(得分:1)

JUnit以不可预测的顺序执行测试,因此任何测试都不应该依赖于任何其他测试的执行。将测试分开是正确的做法。

为了初始化所有内容,请使用@Before注释的方法进行设置,并使用@After注释掉的方法。这些方法将在每次测试之前和之后执行,因此您可以确保测试设置相同且不会相互影响。