我写了一个长参数化测试,其中一个参数是一个带有双括号语法的构造函数调用,为2D数组的每一行构造一个不同的对象:
Object[][] data = new Object[][] {
{ 1, 2, 3, new Blah() {{ setA(); }} }
{ 1, 2, 3, new Blah() {{ setB(); }} }
...
由于JUnit的原理是在每个@Test上调用测试用例构造函数,我假设它会对参数化测试做同样的事情 - 但我发现它只调用那个构造函数(为其定义的构造函数)参数化测试)每行一次,而不是每行测试一次。
因此,测试字段表现为全局,测试相互影响。我想知道是否有一种方法可以强制运行器为每个测试调用构造函数,就像使用常规JUnit运行器一样。在这种情况下,Google和JUnit页面并没有帮助我。我真的不想重写整个测试,这个广泛且相当可读。