我正在使用Cucumber在Spring Boot应用程序上运行集成测试,在我的步骤定义中,我的代码使用以下代码引导Spring Boot应用程序:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Application.class, loader = SpringApplicationContextLoader.class)
@WebAppConfiguration
@IntegrationTest
@Slf4j
public class CreditCardStepdefs {
....
}
现在,我正在尝试重构我的代码以使用Spring Boot 1.4中的simplified annotations,同样的代码现在看起来像这样:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
@Slf4j
public class CreditCardStepdefs {
...
}
但是,我在这段特殊代码中拾取环境变量时遇到了一些问题:
@Autowired
private Environment env;
@Before("@RUN, @POST")
public void setUp() {
this.host = env.getProperty("test.url") + env.getProperty("server.contextPath");
this.results = new HashMap<>();
this.paramKeyList = new ArrayList<>();
this.retry = false;
this.isPassed = true;
}
当我运行测试时,“env.getProperty()”总会抛出一个NPE。看来@AutoWired for Environment不再使用上面的注释了。为了将环境注入上下文,我需要做些什么?