spring-boot(一)引入测试类之坑

1、说明

sping-boot版本号,不同版本号测试注解会不一样


        org.springframework.boot
        spring-boot-starter-parent
        1.5.8.RELEASE
    

2、必要依赖


   org.springframework.boot
    spring-boot-starter-test
    test


 
  org.springframework.restdocs
     spring-restdocs-mockmvc
     test
 
 
 
   junit
     junit
      4.12
 
 
    org.springframework
     spring-test
     4.3.6.RELEASE
 

此时启动测试类会报错:

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing

是因为junit 版本较高的原因,有2个方法可以解决:一是将junit版本号改成4.10,二是加入下面依赖

 
  org.hamcrest
     hamcrest-all
     1.3
 

3、spring-boot接口

@RestController
@RequestMapping(value = "/test/sync/")
@Slf4j
public class Controller {
    @PostMapping(value = "synctest")
    @ResponseBody
    @AuthIgnore
    public String syncTest(@RequestParam(value = "p1")String p1,@RequestParam(value = "p2",required = false)String p2,@RequestParam(value = "p3",required = false)String p3){
       //do something 
    }
}

4、测试类

@RunWith(SpringJUnit4ClassRunner.class)
//MainrLuncher ,是spring-boot 的主启动方法
@SpringBootTest(classes = MainrLuncher.class,
        webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SpringbootApplicationTest {
    @Autowired
    private TestRestTemplate testRestTemplate;

    @Test
    public void syncTest() throws Exception{
      String p1 = "",p2="",p3="";
      //这里把参数加到Url后面
        String url = "/test/sync/synctest?p1="p1"+"&p2="+"p2"+"&p3="+p3;
        Object result =
                testRestTemplate.postForObject(url,params,
                        Object.class,params );
        System.out.println(result);
    }
}

5、报错

因为我用的是Idea开发工具,其中定的的model类都是lomlock插件的注解,直接用@Data注解省去了getter setter方法,在安装完lombock 后应该还要在idea里面设置一下,但我前面没设置,在跑test的类的时候就一直报错:

setter,getter no such method

同时idea中Message框里面也会有如下提示

Lombok Requires Annotation Processing

此时点击这个提示会弹出如下框:
spring-boot(一)引入测试类之坑_第1张图片
只要勾选Enable annotation processiong就可以了

你可能感兴趣的:(spring,boot)