如何在Junit中具有单独的设置函数

如何在Junit中具有单独的设置函数,junit,junit4,Junit,Junit4,我有两个测试函数,对于每一个,我希望有不同的@Before方法。如何实现这一点?尽管在同一个类下组织所有测试似乎很方便,但对于您的情况,我认为最好的选择是将测试分为不同的类,每个类都有相应的设置 另一种选择(我更喜欢前面的选项)是在测试方法中直接调用设置,如下示例: public class FooTest { public void setUpMethod1() { // do setUp things } public void setUpMethod2()

我有两个测试函数,对于每一个,我希望有不同的@Before方法。如何实现这一点?

尽管在同一个类下组织所有测试似乎很方便,但对于您的情况,我认为最好的选择是将测试分为不同的类,每个类都有相应的
设置

另一种选择(我更喜欢前面的选项)是在测试方法中直接调用
设置
,如下示例:

public class FooTest {
   public void setUpMethod1() {
      // do setUp things
   }

   public void setUpMethod2() {
      // do setUp things
   }

   @Test
   public void testMethod1() {
      setUpMethod1();
      // Test
   }

   @Test
   public void testMethod2() {
      setUpMethod2();
      // Test
   }
}
只是出于好奇(我不建议您这样做),您可以用自己的实现覆盖默认的junit
RunListener
。方法
testStarted
在每次测试之前执行,您可以访问类和方法名来识别正在运行的测试。虚拟样本:

public class MyRunListener extends RunListener {    
   @Override
   public void testStarted(Description description) throws Exception {
     //...
      Class testClass = description.getClass();
      String methodName = description.getMethodName();
      //...
   }
}

希望有帮助。

您确定(a)它们属于同一个文件,以及(b)在测试方法之外进行初始化有真正的原因吗?我只是想知道是否可以这样做