使用RestTemplate进行测试

使用RestTemplate进行测试
结论:

  • 1.当需要访问url的时候,注意要将服务启动(就算测试代码写在同一个服务中也要启动服务)
  • 2.当使用到springmvc的时候,也要把springmvc的配置文件加入到启动中.
  • 测试情况1,
    因为makecertcontroller是new出来的,不是由spring生成的,所以会出现sqlsession为null的情况
    解决措施:
    new出来的makecertcontroller要测试的方法就加入一个sqlsession的参数,然后在测试类中注入sqlsession,然后把这个传递给要测试的方法,这样就不会为null了

    出现告警可以不考虑处理,要处理的话就改为scope=”prototype”

  • 2,想直接通过注入makecertcontroller对应的bean的方式来测试,但是报如下告警,最后分析原因是因为我们没有加载springmvc的配置文件的问题,只加载了spring

  • 3,有些方法能直接通过 @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations =
    “classpath:config/applicationContext.xml”)
    的方式进行测试,是因为刚好他们是由spring进行管理的,不需要加载springmvc,

  • 4,如果访问的url,则需要启动服务之后(启动tomcat),才可以进行测试:(注意看console和junit两个地方的报错)
    org.springframework.web.client.ResourceAccessException: I/O error on
    POST request for
    http://127.0.0.1:8080/portal/bindCertWeb/sendCode“:Connection to
    http://127.0.0.1:8080 refused; nested exception is
    org.apache.http.conn.HttpHostConnectException: Connection to
    http://127.0.0.1:8080 refused

    @Test public void sendCodeTest() { String url =
    http://127.0.0.1:8080/portal/bindCertWeb/sendCode“;
    LinkedMultiValueMap

<!-- httpClient end -->
    <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
        <constructor-arg ref="httpClientFactory" />
        <!-- for chinese garbled -->
        <property name="messageConverters">
            <list>
                <bean
                    class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter">
                    <property name="supportedMediaTypes" ref="mdeiaTypes" />
                    <property name="partConverters">
                        <list>
                        <!-- 负责读取字符串格式的数据和写出二进制格式的数据,其中给StringHttpMessageConverter的supportedMediaTypes属性配置了mdeiaTypes,这样可以处理我们提交测试数据时
候中文乱码的问题。
                        -->
                            <bean
                                class="org.springframework.http.converter.StringHttpMessageConverter">
                                <property name="supportedMediaTypes" ref="mdeiaTypes" />
                            </bean>
                            <!-- 负责读取二进制格式的数据和写出二进制格式的数据 -->
                            <bean
                                class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
                            <!-- 负责读取资源文件和写出资源文件数据-->
                            <bean
                                class="org.springframework.http.converter.ResourceHttpMessageConverter" />
                            <!-- 负责读取二进制格式的数据和写出二进制格式的数据 -->
                            <bean
                                class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
                            <bean
                                class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
                            <!-- 负责读取二进制格式的数据和写出二进制格式的数据 -->
                            <bean
                                class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
                        </list>
                    </property>
                </bean>
                <bean
                    class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name="supportedMediaTypes" ref="mdeiaTypes" />
                </bean>
            </list>
        </property>
    </bean>
<util:list id="mdeiaTypes" list-class="java.util.ArrayList">
        <value>application/x-www-form-urlencoded;charset=UTF-8</value>
        <value>multipart/form-data;charset=UTF-8</value>
        <value>text/plain</value>
        <value>text/html;charset=UTF-8</value>
        <value>application/xml;charset=UTF-8</value>
    </util:list>
<bean
                    class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name="supportedMediaTypes" ref="mdeiaTypes" />
                </bean>

在添加完以上配置之后,可以在我们的测试类里面直接用来测试我们写好的Controller:
1、在测试类上加上该注解:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:config/applicationContext.xml")

2、然后注入resttemplate:

@Autowired
    private RestTemplate restTemplate;

3、restTemplate.postForObject(url, map, String.class);
可参考资料:http://blog.csdn.net/wwwihpccn/article/details/30496089

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值