显式调用@PostConstruct注解的方法

问题描述:

我正在为我的java类之一编写junit测试。我有如下所示为此,我想要写的单元测试@PostConstruct注解的方法:显式调用@PostConstruct注解的方法

@PostConstruct 
public void initialize() { 
    try { 
     logger.info("Bootstrapping Safenet Initialization"); 
     String hello = cryptographicController.encrypt("Hello"); 
     logger.info("Bootstrapping Safenet " + hello); 
    } catch (Throwable ex) { 
     logger.error("Error initializing Crypto", ex); 
     throw new DataConverterException(); 
    } 
} 

我想要写单元测试来测试DataConverterException。但我不确定是否可以从我的单元测试中明确地调用初始化方法。

我该怎么做?

+0

你说的*“的意思,但我不知道如果我能显式调用(...)“* - 为什么你不试试? – kryger

+0

@kryger我在发布问题前试过了。出现了一些错误,所以我不确定错误是因为明确地调用了postConstruct还是其他的东西。我对Java和Spring非常陌生,仍处于挣扎阶段。 – eureka19

+0

您应该包含错误堆栈跟踪并解释您的问题中的含义。 – kryger

情况1:

如果用于Java类的豆在xml和上下文配置创建被加载,则豆生命周期方法将被自动调用。

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = "XX") 

案例2:

Bean的生命周期方法@PostConstruct@PreDestroy应明确在单元测试用例调用测试。

如果测试类的对象是像下面

JavaClass javaClass = new JavaClass(); 

然后是,因为不创建Bean,那么我们需要调用initialize方法explicilty创建。

这两种情况下,您就可以测试所需要的面积,

惩戒cryptographicController应该给你所需要的选项

@Test(expected=DataConverterException.class) 
public void test() { 
    doThrow(new RuntimeException()).when(cryptographicController).encrypt("Hello"); 
    javaClass.initialize(); 
} 
+1

谢谢。这有帮助 – eureka19