java如何处理相互依赖的JUnit测试?
我有一个关于JUnit测试的问题
我们的JUnit套件正在测试我们编写的与内存系统交互的各种函数
我们系统的设计方式要求它是静态的,因此在运行测试之前进行初始化
我们所面临的问题是,当后续测试运行时,它们会受到之前测试的影响,因此我们可能(而且很可能)得到误报,或者准确的失败
有没有办法维持JUnit测试的测试顺序,但让它重新初始化整个系统,就像从头开始在系统上测试一样
我们能想到的唯一选择是编写一个方法来实现这一点,并在每次测试结束时调用它,但由于有很多事情需要以这种方式重置,我希望有一种更简单的方法来实现这一点
# 1 楼答案
我处理这类问题的方法是在每次测试之前进行部分重新初始化。每个测试都知道它需要的前提条件,并且设置确保它们是真实的。不确定这是否与你有关。依赖顺序往往最终成为一个持续的PITA——能够自己运行测试更好
哦,是的,有一个“测试”是作为负责静态初始化的套件的开始运行的
# 2 楼答案
我多次看到测试中存在相互依赖的问题(有时是故意的!)
首先,您需要设置一种设置方法:
这在每次测试之前由JUnit自动运行,并将重置环境。您也可以在之后添加一个,但为了确保一个干净的起点,在之前更好
测试的顺序通常是测试类中的顺序。但这永远都不应该被假设,基于这一点编写代码是一个非常糟糕的想法
回到documentation。如果你需要更多的信息
# 3 楼答案
您可能想看看TestNG,它支持此类功能测试的测试依赖项(JUnit是一个单元测试框架):