我对JUnit测试有疑问。
我们的JUnit套件正在测试我们编写的与内存系统交互的各种函数。
我们的系统设计方式要求它是静态的,因此在运行测试之前进行初始化。
我们遇到的问题是,当后续测试运行时,它们会受到之前测试的影响,因此可能(并且可能)我们会出现误报或无效的故障。
是否有办法维护JUnit测试的测试顺序,但是让它重新初始化整个系统,就好像从头开始在系统上进行测试一样。
我们能想到的唯一选择是编写一个执行此操作的方法,并在每次测试结束时调用它,但由于有很多东西需要以这种方式重置,我希望在那里这是一种更简单的方法。
答案 0 :(得分:3)
我已经多次看到测试问题,他们彼此依赖(有时是故意的!)。
首先,您需要设置setUp方法:
@Before
public void setUp() {
super.setUp();
// Now clear, reset, etc all your static data.
}
这在每次测试之前由JUnit自动运行,并将重置环境。您也可以添加一个,但之前更好地确保一个干净的起点。
测试的顺序通常是它们在测试类中的顺序。但是永远不应该假设这一点,并且在此基础上编写代码是一个非常糟糕的主意。
返回documentation。如果您需要更多信息。
答案 1 :(得分:0)
我对这种问题采取的方法是在每次测试之前进行部分重新初始化。每个测试都知道它需要的前提条件,并且设置确保它们是真的。不确定这是否与您相关。依靠订单往往最终成为一个持续的PITA - 能够自己运行测试更好。
哦是的 - 有一个“测试”作为负责静态初始化的套件的开头运行。
答案 2 :(得分:0)
您可能希望查看TestNG,它支持此类功能测试的测试依赖性(JUnit是一个单元测试框架):
@Test
public void f1() {}
@Test(dependsOnMethods = "f1")
public void f2() {}