使用 spring boot 2.1.15.RELEASE(junit 4) 将 Bean 自动装配为 null 以进行集成测试
Bean autowired as null for integration test using spring boot 2.1.15.RELEASE(junit 4)
以下是导致问题的我的代码,它使用的是 spring-boot-starter-parent 2.1。15.RELEASE(此版本中包含 junit 4)。在此上下文中,摘要,title 所有bean 都被注入为空。
import com.example.demo.helpers.Subtitle;
import com.example.demo.helpers.Summary;
import com.example.demo.helpers.Title;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
@SpringBootTest(classes = {Summary.class, Title.class, Subtitle.class},webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(initializers = org.springframework.boot.test.context.ConfigFileApplicationContextInitializer.class)
public class DemoApplicationTests {
@Autowired
ApplicationContext context; // null
@Autowired
Summary summary; // null
@Autowired
Title title; // null
@Test
public void contextLoads() {
System.out.println("executed testcase..");
}
}
然而,当我将 spring-boot-starter-parent 的版本升级到 2.6.1(其中包含 junit 5)时。所有自动装配的 bean 都被正确注入。
但是有一定的限制,我现在不能升级版本。
你不见了
@RunWith(SpringRunner.class)
否则 Autowired 不适用于 JUnit 4
见
以下是导致问题的我的代码,它使用的是 spring-boot-starter-parent 2.1。15.RELEASE(此版本中包含 junit 4)。在此上下文中,摘要,title 所有bean 都被注入为空。
import com.example.demo.helpers.Subtitle;
import com.example.demo.helpers.Summary;
import com.example.demo.helpers.Title;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
@SpringBootTest(classes = {Summary.class, Title.class, Subtitle.class},webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(initializers = org.springframework.boot.test.context.ConfigFileApplicationContextInitializer.class)
public class DemoApplicationTests {
@Autowired
ApplicationContext context; // null
@Autowired
Summary summary; // null
@Autowired
Title title; // null
@Test
public void contextLoads() {
System.out.println("executed testcase..");
}
}
然而,当我将 spring-boot-starter-parent 的版本升级到 2.6.1(其中包含 junit 5)时。所有自动装配的 bean 都被正确注入。
但是有一定的限制,我现在不能升级版本。
你不见了
@RunWith(SpringRunner.class)
否则 Autowired 不适用于 JUnit 4
见