显式调用@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。但我不确定是否可以从我的单元测试中明确地调用初始化方法。
我该怎么做?
答
情况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
你说的*“的意思,但我不知道如果我能显式调用(...)“* - 为什么你不试试? – kryger
@kryger我在发布问题前试过了。出现了一些错误,所以我不确定错误是因为明确地调用了postConstruct还是其他的东西。我对Java和Spring非常陌生,仍处于挣扎阶段。 – eureka19
您应该包含错误堆栈跟踪并解释您的问题中的含义。 – kryger