如果@before在构造函数之后执行,那么如何初始化类?

时间:2014-09-11 14:51:44

标签: java constructor junit4 oracle-adf

我正在Oracle ADF中准备一些JUnit测试,我感到很惊讶因为我看到测试类的构造函数在@before setup()方法之前执行...

问题是构造函数需要初始化变量,我从setup方法设置为构造函数...而且逻辑上我总是得到一个漂亮的NullPointerException ......

我能看到的唯一解决方案是直接从构造函数初始化变量,但我看到非常难看

有什么想法吗?在此先感谢你们

2 个答案:

答案 0 :(得分:2)

也许您可以使用JUnit的@BeforeClass注释。

  

有时,多个测试需要共享计算成本高昂的设置(例如登录数据库)。虽然这会损害测试的独立性,但有时这是必要的优化。使用@BeforeClass注释public static void no-arg方法会导致它在类中的任何测试方法之前运行一次。超类的@BeforeClass方法将在当前类之前运行。

@Before

  

编写测试时,通常会发现多个测试需要在运行之前创建类似的对象。使用@Before注释public void方法会导致该方法在Test方法之前运行。 @Before超类方法将在当前类的方法之前运行。

答案 1 :(得分:0)

@BeforeClass将在构造函数调用之前执行;序列是

  1. @BeforeClass
  2. Construcor call
  3. @Before
  4. @Test