我正在为我的一个java类编写junit测试。我有一个 @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 。但我不确定我是否可以从单元测试中明确调用 initialize 方法。
我该怎么做?
答案 0 :(得分:2)
案例1:
如果在xml中创建了java类的bean并且加载了上下文配置,那么将自动调用bean生命周期方法。
@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();
}