Java JUnit参数在套件中首先运行的所有测试的方法,而不是在每个测试之前

Java JUnit参数在套件中首先运行的所有测试的方法,而不是在每个测试之前,java,unit-testing,junit,parameterized,Java,Unit Testing,Junit,Parameterized,基本问题是,当我将JUnit测试分组到套件或套件套件中时,所有测试的@Parameters方法首先运行,然后执行各个套件或测试。我们的设置如下: @RunWith(Suite.class) @SuiteClasses({SubTestSuite01.class, SubTestSuite02.class,SubTestSuite03.class}) public class AllTests{} 我们有多个测试类文件,每个文件都有带有实际测试的静态内部类 @RunWith(Suite.clas

基本问题是,当我将JUnit测试分组到套件或套件套件中时,所有测试的
@Parameters
方法首先运行,然后执行各个套件或测试。我们的设置如下:

@RunWith(Suite.class)
@SuiteClasses({SubTestSuite01.class, SubTestSuite02.class,SubTestSuite03.class})
public class AllTests{}
我们有多个测试类文件,每个文件都有带有实际测试的静态内部类

@RunWith(Suite.class)
@SuiteClasses({
   SubTestSuite01.TestSet01.class,
   SubTestSuite01.TestSet02.class})
public class SubTestSuite01 {
  public static class TestSet01{
    public TestSet01(){}
    @Parameters public static Collection<Object[]> data(){}
    @Test public void test01(){}
    @Test public void test02(){}
  }

  public static class TestSet02{
    public TestSet02(){}
    @Parameters public static Collection<Object[]> data(){}
    @Test public void test01(){}
    @Test public void test02(){}
  }
} 
但是,无论是运行
AllTests
主套件还是
SubTestSuite
,所有内部类的
@Parameters
方法都会首先在整个套件中调用,然后调用任何
@BeforeClass
方法或实际的测试方法

我的问题是:

  • 这是预期的行为吗

  • 我如何让它运行,以使单个内部类的
    @Parameters
    方法在执行它自己的测试之前运行,而不是在套件的开头一起运行

  • 按照当前的行为,由于各种东西都被加载在一起,我可能会很快占用我的系统资源。

    @Parameterized将始终首先运行,甚至在@BeforeClass之前


    您不必在测试中使用静态类和内部类,我会使用类来进行类似的测试并选择组

    这种设置非常不寻常。我建议进行更正常的设置,看看那里的情况如何。至于在BeforeClass之前运行的Parameters方法,在这种情况下,我认为这将是我所期望的行为。@baba您能澄清一下更正常的设置是什么意思吗。。。?或者为什么这样的设置是不寻常的…?有人。。。。?任何进一步的线索…?没错,我不需要使用静态内部类。然而,我的问题是,无论我如何组织测试和套件,所有参数化的
    @都将首先在整个套件中运行。我真的需要一种方法让它一次运行一个测试类。。。。