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

Java JUnit是否将随机属性设置为null?,java,junit,Java,Junit,我有一系列相互依赖的测试方法。我一直在将对象设置为默认状态或只是将其属性更改为null时遇到问题。在正常的程序中,这样的事情是不会发生的。将事情随机设置为final似乎有帮助,但我不能仅仅因为测试而修改生产代码 将属性设置为final也意味着它不在我的代码中——如果我的代码更改了这些属性,编译器就不会编译它(在我的代码中没有反射) 在我深入研究之前,你能告诉我JUnit是否应该这样做吗?如果是,我可以阅读哪些规则?如果要在每次测试之前初始化某些对象,请尝试使用注释@before来初始化函数 请参

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

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


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

如果要在每次测试之前初始化某些对象,请尝试使用注释@before来初始化函数


请参见

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


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

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

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


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

junit不会随机将属性设置为null,junit以随机顺序执行测试方法“我有一系列相互依赖的测试方法。”这是对单元测试的否定。@Kuba轻微更正:junit以不可更改的顺序执行测试。它实际上不是随机的。默认情况下,测试将以每次运行的相同顺序运行。@NamshubWriter true!我已经编辑了我的答案。