我们在创建一个springboot项目时,并在pom文件中添加了Eureka客户端的依赖,并在启动类中添加了@EnableDiscoveryClient的注解,如下图所示
这时候启动会报java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V的错误
这是由于spring boot版本兼容性导致的,这是我们可以降低springboot的版本来解决
在降低springboot版本之后我们会发现,高版本的sprinboot创建的测试类会报错
我们可以做如下修改
1、删除高版本默认导入的org.junit.jupiter.api.Test类,重新导入org.junit.Test类
2、在类上添加注释@RunWith(SpringRunner.class)
3、将测试类和测试方法都修改为public
注:
通过@RunWith注解,更改测试运行器,更改使用的测试类为SpringRunner.class,使之适应spring。
@RunWith(SpringRunner.class)使用了Spring的SpringRunner,以便在测试开始的时候自动创建Spring的应用上下文。其他的想创建spring容器的话,就得子啊web.xml配置classloder。 注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用启动spring容器
SpringRunner 继承了SpringJUnit4ClassRunner,没有扩展任何功能(查看源码可以看到public final class SpringRunner extends SpringJUnit4ClassRunner);使用前者,名字简短而已