【发布时间】:2020-09-28 15:00:36
【问题描述】:
我正在尝试为使用 Spring boot 编写的 SOAP 端点编写单元测试。最初我使用@RunWith(SpringJUnit4ClassRunner.class) 编写测试,所有测试都成功执行。但是,当我尝试使用@ExtendWith(SpringExtension.class) 升级单元测试时,测试无法运行,因为它无法自动连接ApplicationContext 对象。下面是新旧代码的一部分。
旧代码:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestConfiguration.class})
public class ServiceEndPointTest {
@Autowired
private ApplicationContext applicationContext;
private MockWebServiceClient mockClient;
@Before
public void setUp() {
mockClient = MockWebServiceClient.createClient(applicationContext);
}
新代码:
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {TestConfiguration.class})
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@ActiveProfiles(profiles = "unittest")
public class ServiceEndPointTest {
@Autowired
private ApplicationContext applicationContext;
private MockWebServiceClient mockClient;
@Before
public void setUp() {
mockClient = MockWebServiceClient.createClient(applicationContext);
}
我在setUp() 中遇到错误,因为applicationContext 是null。
java.lang.IllegalArgumentException: 'applicationContext' must not be null
at org.springframework.util.Assert.notNull(Assert.java:198)
at org.springframework.ws.test.server.MockWebServiceClient.createClient(MockWebServiceClient.java:151)
at com.test.ServiceEndPointTest.setUp(ServiceEndPointTest.java:80
不确定这里缺少什么。
请帮忙。
【问题讨论】:
标签: spring-boot junit junit5 applicationcontext