junit 4是否具有MbUnit的AssemblySetUp属性的等价物?

时间:2012-03-05 12:15:24

标签: java junit

  

可能重复:
  JUnit 4: Set up things in a test suite before tests are run (like a test's @BeforeClass method, just for a test suite)

我正在寻找一个在所有测试之前只调用一次的入口点,不仅仅是在一个类中,而是在同一个jar中的所有套件和类中的

MbUnit(在.NET中)提供了AssemblySetUp属性,该属性指定了这样一个入口点。

如何使用junit 4在java中执行此操作?

2 个答案:

答案 0 :(得分:0)

查看文档,我没有看到任何简单的方法来执行此操作。有@BeforeClass注释,每个类只运行一次。

更好的解决方案可能是重构;在您的示例用例中,为什么有这么多类访问网络?如果您封装了该功能,并将其模拟为所有其他测试用例,则可以大大减少需要该设置的测试数量。

编辑:2年后回来再没有回复的事情。您可以将您的网络设置放在自己的类中,并让它跟踪它是否被调用(像private static final calledYet = false那样简单),然后用@BeforeClass方法从所有测试用例中调用它,或者甚至还有一个超类,它有自己的@BeforeClass方法,可以扩展所有测试用例。

答案 1 :(得分:0)

我对这个问题的解决方案(对于某些测试而言成本相同的昂贵设置)是使用init方法的Setup-Class:

private static boolean initialized = false;

public static void init()
{
  if (initialized)
  {
    return;
  }

  //... do all the init stuff
  initialized = true;
}

缺点是你必须在每个依赖于初始化的那个中调用它。

您也可以编写自己的TestRunner,它可以处理初始化。