簡體   English   中英

@Autowired 注釋在 Junit5 Jupiter 中不起作用

[英]@Autowired annotation does not work in Junit5 Jupiter

使用 Junit 4 Autowired 功能運行良好。 但是一旦我遷移到 Junit 5,我就無法使 Autowired 工作,並且有很多依賴項可以通過模擬每個對象來覆蓋所有內容。 瀏覽了很多網站並嘗試了各種注釋和依賴項,但仍然無法使其工作。 下面是我的服務實現類。

@Service
public class DetailsServiceImpl implements IDetailsService {
    @Autowired
    FormatBO formatBO;
    
    public List<TestBean> fetchChargeDetails(TestBean bean){
        response = //api call
        
        List<TestBean> details = formatBO.fetchMoreDetails(response);
        return details;
    }
}

下面是我的測試課

@ExtendWith(MockitoExtension.class)
@ExtendWith(SpringExtension.class)
@RunWith(JUnitPlatform.class)
@ContextConfiguration(classes = {FormatBO.class,Mapper.class})
public class SimpleImplTest {
    
    @MockBean
    Mapper mapper;

    @Autowired
    FormatBO formatBO;
    
    @InjectMocks
    private DetailsServiceImpl service = new DetailsServiceImpl();
    
    static TestBean bean;
    
    @BeforeEach
    public void initData() {
        bean = new TestBean();
        bean.setCategoryId("1");
    }

    
    @Test
    public void getBasicDetailsTest(){
        service.fetchBasicDetails(bean);
    }
}

FormatBO.class 是另一個類,我試圖自動裝配其他功能,但沒有發生。 而是在調用 fetchMoreDetails 方法時獲取空指針,因為 formatBO 為空。 請幫助解決這個問題

試試這個:

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {FormatBO.class,Mapper.class, DetailsServiceImpl.class})
public class SimpleImplTest {

    @MockBean
    Mapper mapper;

    @Autowired
    FormatBO formatBO;

    @Autowired
    private DetailsServiceImpl service;

    static TestBean bean;

    @BeforeEach
    public void initData() {
        bean = new TestBean();
        bean.setCategoryId("1");
    }


    @Test
    public void getBasicDetailsTest(){
        service.fetchBasicDetails(bean);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM