java - 如何配置Spock测试来加载Spring Context(对于@Autowired)?

标签 java spring spock applicationcontext

我有这样的Application类:

@Configuration
@EnableAutoConfiguration
@ComponentScan
@ImportResource("classpath:applicationContext.xml")
@EnableJpaRepositories("ibd.jpa")
public class Application {

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}
}

我也有这个 UserService 类(它是由 @EnableJpaRepositories("ibd.jpa") 发现的):

@RestController
@RequestMapping("/user")
public class UserService {

@Autowired
private UserRepository userRepository;

@RequestMapping(method = RequestMethod.POST)
public User createUser(@RequestParam String login, @RequestParam String password){
    return userRepository.save(new User(login,password));
} 

我尝试在此UserService中进行测试:

@ContextConfiguration
class UserServiceTest extends Specification {

@Autowired
def UserService userService


def "if User not exists 404 status in response sent and corresponding message shown"() {
    when: 'rest account url is hit'
    MockMvc mockMvc = standaloneSetup(userService).build()
        def response = mockMvc.perform(get('/user?login=wrongusername&password=wrongPassword')).andReturn().response
    then:
        response.status == NOT_FOUND.value()
        response.errorMessage == "Login or password is not correct"

}

但问题是: 测试中的UserService为null - 它没有成功@Autowired;这表明 Spring 上下文没有加载。如何配置才能成功 Autowiring ?

最佳答案

解决方法:

@ContextConfiguration(loader = SpringApplicationContextLoader.class, classes = Application.class)
@WebAppConfiguration
@IntegrationTest

RestTemplate 和使用

as in this question

关于java - 如何配置Spock测试来加载Spring Context(对于@Autowired)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30841795/

相关文章:

java - 将 JSON 对象从 Nashorn 放入并获取 MongoDB

java - 大整数的底除法和欧几里得除法

java - 从 Spring MVC 端点流式传输动态图像而不将其保存在内存中

java - Spring-Boot 的最终目标

java - 使用带有 Groovy 2.6+ 的 Spock 框架来支持 Java 8+ 语法

gradle - Gradle和Spock很少需要运行测试

java - 如何在读取文件时跳过空行(java)?

java - Java 中等效的 Anylogic 函数 "zidz"是什么?

java - Post API 没有给出任何反应

spring-boot - Spring Boot 1.4,Spock和application.properties