Springboot 1.5没有Classe def在尝试测试服务时发现FilterRegistrationBean

时间:2017-02-06 23:05:53

标签: unit-testing spring-boot

我正在尝试使用Springboot 1.5测试服务我一直在为FilterRegestionBean找到No class的异常。

@RunWith(SpringRunner.class)
@SpringBootTest
class ApiServiceSpecTest {

    @Autowired
    ApiService apiService;

    @Test
    public void testGetApis() {
        List<Api> apis = this.apiService.getApis("KFS")
        given(this.apiService.getApis("KFS")).willReturn("some stuff")
    assertThat(!apis.empty)
}

我的build.gradle看起来像:

compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-sleuth', version:'1.1.1.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version:'1.5.1.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version:'1.5.1.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version:'1.5.1.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version:'1.5.1.RELEASE'
compile(group: 'org.springframework.boot', name: 'spring-boot-starter-test', version:'1.5.1.RELEASE')

我已经检查了文档并觉得我已经实现了这个例子,但我无法让它运行。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

FilterRegistrationBean在Spring boot 1.4.x中被弃用,很可能在Spring boot 1.5中被删除(它只更改了包)。你的spring-cloud-sleuth依赖可能是基于Spring Boot 1.4的,所以当你试图用旧包中的>>cmap(0)=1 File "<ipython-input-38-db88980f3077>", line 1 cmap(0)=1 SyntaxError: can't assign to function call 类来实例化它的跟踪过滤器时,你会遇到运行时问题。

解决方案:将spring-cloud-sleuth依赖关系更新为今天刚刚发布的1.1.2.RELEASE:Release和相关的Github issue

答案 1 :(得分:0)

在spring boot 1.5及更高版本中,他们移动了FilterRegistrationBean类。我通过从 -

更改我的import语句解决了这个问题
  

进口   org.springframework.boot.context.embedded.FilterRegistrationBean;

  

import org.springframework.boot.web.servlet.FilterRegistrationBean;

这很有效。这适用于spring boot 1.5.1 Release和1.5.2 Release。

来源 - spring boot FilterReistrationBean