![](/img/trans.png)
[英]@Autowired and UnsatisfiedDependencyException in Spring integration test
[英]Why is Spring @Autowired ApplicationContext null in integration test?
我還是 Spring 的新手,並且在堆棧上查看了類似的問題,但無法從我讀過的內容中找到答案。
當我調用我的 applicationContext 變量時,我收到一個 NPE,這意味着 bean 一定沒有被正確創建或注入。 這是我的程序的相關部分。
@SpringBootTest
@ContextConfiguration(classes = TestConfig.class)
public class SampleIT {
@Autowired
private ApplicationContext applicationContext;
@Test
public void sampleMethod() throws Exception {
//NPE below
String[] allBeanNames = applicationContext.getBeanDefinitionNames();
//more logic
我試圖讓 ApplicationContext 實例調試為什么其他 bean 是我的配置中的 null ,所以這一切都必須是因為我對如何設置 ApplicationContext 和注入其中的 bean 的理解存在一個基本缺陷。 很感謝任何形式的幫助!
嘗試將以下注釋添加到您的 class SampleIT
:
@RunWith(SpringRunner.class)
如果您在版本 4 中使用 Junit,則必須使用 @RunWith(SpringRunner.class),如果您使用的是 Junit 版本 5,則必須使用 @ExtendWith(SpringExtension.class)。
此外,如果您使用的是 Mockito 您可以使用 @ExtendWith(MockitoExtension.class) 等。
我強烈建議在此鏈接@SpringBootTest中閱讀有關@SpringBootTest
注釋的文檔
現在回答我自己的問題。 導入org.junit.jupiter.api.Test
而不是org.junit.Test
將導致使用 Junit5。 這將允許 Junit 在沒有@RunWith(SpringRunner.class)
注釋的情況下與 Spring 一起使用。 我正在使用的代碼庫中仍然存在 Junit4 的殘余,因此這是在完全遷移到 Junit 5 之前的快速修復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.