我正在寻找一个在所有测试之前只调用一次的入口点,不仅仅是在一个类中,而是在同一个jar中的所有套件和类中的 。
MbUnit(在.NET中)提供了AssemblySetUp
属性,该属性指定了这样一个入口点。
如何使用junit 4在java中执行此操作?
答案 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,它可以处理初始化。