【发布时间】:2014-09-12 11:49:33
【问题描述】:
有没有什么方法可以确保某些代码在启动时运行而不管程序使用什么入口点?
例如,我的程序在其主入口点的静态初始化程序中有一些代码,用于检查断言是否启用。由于集成测试在没有启用断言的情况下运行,我们有一些未捕获的错误。静态初始化程序没有捕捉到这一点,因为它仅在加载该特定类时运行。
那么有没有办法制作“程序初始化器”:程序启动时始终运行的代码?
我可以创建一些每个入口点都必须调用的静态方法,但这意味着每个单独的测试也必须调用它(因为每个单元测试都是一个入口点)。这看起来相当混乱(很容易忘记添加它,增加了很多混乱等等)。
有没有更好的解决方案?
【问题讨论】:
-
这听起来像是您的测试套件中的一个错误。修复它并继续前进。除非你为每个使用断言的类添加一个静态初始化器——不,我看不到这样做的方法。
-
您的测试的顶级
Suite中的@BeforeClass怎么样?还是无论入口点是什么都加载的类,某种应用程序上下文? -
@markspace,测试套件确实有一个错误。然而,直到很晚才发现它,因为我们不小心在禁用断言的情况下运行测试(Java 的默认设置)。确保断言启用(或严重崩溃)的代码有助于避免将来犯此错误。
标签: java