使用 Mockito 测试 @Postconstruct

Jan*_*owy 6 java spring mocking mockito postconstruct

为什么当我通过Mockito我的@Postconstruckt方法注入模拟时没有调用?

@Service
public class MyService {
    public MyService() {
        System.out.println("CONSTRUKTOR");
    }

    @PostConstruct
    public void init() {
        System.out.println("POST CONSTRUCT");
    }

@RunWith(MockitoJUnitRunner.class)
public class Mockito1 {

    @InjectMocks
    private MyService service;

    @Before
    public void init() {
    }
Run Code Online (Sandbox Code Playgroud)

输出: 仅: CONSTRUKTOR

小智 5

因为PostConstruct只是spring的概念。但你可以手动调用 postConstruct 。

@Before
public void prepare() {
    MockitoAnnotations.initMocks(this);
    this.service.init(); //your Injected bean
}
Run Code Online (Sandbox Code Playgroud)

  • `@PostConstruct` 不仅仅是一个 Spring 概念,它甚至不是一个 Spring 注解。 (26认同)