RestClientTest和NoSuchBeanDefinitionException

时间:2018-03-07 09:40:09

标签: java spring-boot junit spring-boot-configuration

我正在尝试使用@RestClientTest来测试其他客户端类。

据说:

  

它仅适用于与休息客户端测试相关的配置   (Jackson或GSON自动配置,以及@JsonComponent bean),但是   不是常规的@Component bean。

@RunWith(SpringRunner.class)
//@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@RestClientTest(JasperClient.class)
public class JasperClientTest {
...

正如预期的那样,我得到的错误如:NoSuchBeanDefinitionException对于确实无关紧要的bean。

有没有办法跳过这些错误?或者我为这个特定的测试类配置上下文还是sth?

提前致谢。

2 个答案:

答案 0 :(得分:3)

我找到了解决方案。

由于我们不能将@RestClientTest与@SpringBootTest一起使用,请坚持使用通常的@SpringBootTest并使用测试实用程序类,如下所示:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class JasperClientTest {

    @Value("${jasper.baseUri}")
    private String jasperBaseURI;

    @Autowired
    RestTemplate restTemplate;

    @Autowired
    private JasperClient jasperClient;

    private MockRestServiceServer mockRestServiceServer;

    @Before
    public void setUp() {
        mockRestServiceServer = MockRestServiceServer.createServer(restTemplate);
    }

    @Test
    public void sendRequest() {

        String detailsString ="{message : 'under construction'}";

        String externalId = "89610185002142494052";
        String uri = jasperBaseURI +  "/devices/" + externalId + "/smsMessages";

        mockRestServiceServer.expect(requestTo(uri)).andExpect(method(POST))
                .andRespond(withSuccess(detailsString, MediaType.APPLICATION_JSON));

        boolean isSentSuccessfully = jasperClient.sendRequest(externalId);
        assertTrue(isSentSuccessfully);
    }
}

答案 1 :(得分:2)

Spring Boot是一个方便的框架,它为许多自动配置的Spring bean提供了典型的设置,使您可以更少地专注于Spring应用程序的配置,更多地关注代码和业务逻辑。

http://www.baeldung.com/restclienttest-in-spring-boot会帮助你!