springtest-junit-jidi--测试接口

 

 

 

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

 

 

 

 

一,问题分析

假如在一个项目中要测试一个接口,但是这个项目没有对外开放url地址,话句话就是说浏览器访问不了里面的资源,自己造的数据不能测试接口,那么只能等别人来调用自己的接口,而且自己也不能测试,假如单纯的通过junit来测试的话,那么是无法加载IOC容器里面的东西,话句话就是说加载不了原来在tomcat启动的时候,加载xml的文件,applicationcontext容器里面的东西加载不了,所以用springtest,但是问题又来了,现在数据源是通过jidi来配置在tomcat里面的,怎么能加载到项目以外的东西呢?

二,代码分析

2.1,原来的/src/main/resources/context/init/context-ds.xml

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans  xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 7             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
 8             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
 9             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
10 
11     
12  
13      <bean id="dataSource" class="com.bill99.boss.ds.util.DynamicDataSource" >  
14         <property name="targetDataSources">  
15             <map key-type="java.lang.String">  
16                 <entry key="appmobile" value-ref="mobileDS" ></entry> 
17                 <entry key="org" value-ref="bossDS" ></entry>  
18             </map>  
19         </property>  
20         <property name="defaultTargetDataSource" ref="defaultDataSource" >  
21         </property>  
22     </bean>   
23     
24     <bean id="defaultDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
25         <property name="jndiName" value="java:comp/env/BILL99/JDBC/SEASHELL" />
26     </bean>
27     
28     <bean id="mobileDS" class="org.springframework.jndi.JndiObjectFactoryBean">
29         <property name="jndiName" value="java:comp/env/BILL99/JDBC/WX-PORTAL" />
30     </bean>
31     
32     <bean id="bossDS" class="org.springframework.jndi.JndiObjectFactoryBean">
33         <property name="jndiName" value="java:comp/env/BILL99/JDBC/ORG" />
34     </bean>
35 
36     <bean id="orgjdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
37         <constructor-arg ref="bossDS" />
38     </bean>
39 
40     <bean id="appmobilejdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
41         <constructor-arg ref="mobileDS" />
42     </bean>
43     
44     <bean id="seashelljdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
45         <constructor-arg ref="defaultDataSource" />
46     </bean>
47     
48     <bean id="dataSourceProxy" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
49         <constructor-arg ref="defaultDataSource"></constructor-arg>
50     </bean>
51     
52     <alias name="dataSourceProxy" alias="seashellDS" />
53     <alias name="dataSourceProxy" alias="authenticationDS" />
54     <alias name="dataSourceProxy" alias="authorizationDS" />
55     <alias name="dataSourceProxy" alias="logDS" />
56     <alias name="dataSourceProxy" alias="accountingDS" />
57     <alias name="dataSourceProxy" alias="cosDS" />
58     <alias name="dataSourceProxy" alias="metadataDS" />
59     <alias name="dataSourceProxy" alias="notificationDS" />
60     <alias name="dataSourceProxy" alias="productDS" />
61     <alias name="dataSourceProxy" alias="marketingDS" />
62     <alias name="dataSourceProxy" alias="memberappDS" />
63     <alias name="dataSourceProxy" alias="gatewayDS" />
64     <alias name="dataSourceProxy" alias="pseDS" />
65     <alias name="dataSourceProxy" alias="fundoutDS" />
66     <alias name="dataSourceProxy" alias="memberinfoDS"/>
67 
68 
69     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
70         <constructor-arg ref="dataSource" />
71     </bean>
72 
73     <bean id="transactionManager"
74         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
75         <property name="dataSource" ref="bossDS" />
76         <property name="globalRollbackOnParticipationFailure" value="false" /> 
77     </bean>
78     <aop:config>
79         <aop:advisor
80             pointcut="@within(org.springframework.transaction.annotation.Transactional)"
81             advice-ref="txAdvice" order="1"/>
82     </aop:config>
83     
84     <tx:advice id="txAdvice">
85         <tx:attributes>
86             <tx:method name="getToAuthList" propagation="REQUIRES_NEW"/>
87             <tx:method name="*" rollback-for="java.lang.Exception"/>
88         </tx:attributes>
89     </tx:advice>
90     
91 </beans>

 

 

 2.2,tomcat下的xml文件context.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3     <WatchedResource>WEB-INF/web.xml</WatchedResource>      
 4      
 5 <Resource acquireIncrement="2" auth="Container" driverClass="org.gjt.mm.mysql.Driver" factory="com.bill99.seashell.encrypt.C3p0BeanFactory" idleConnectionTestPeriod="3600" jdbcUrl="jdbc:mysql://192.168.126.147:3306/boss?useUnicode=true&amp;characterEncoding=UTF-8" maxIdleTime="3600" maxPoolSize="30" minPoolSize="3" name="BILL99/JDBC/ORG" password="111111" type="com.mchange.v2.c3p0.ComboPooledDataSource" user="root"/>
 6 
 7 <Resource acquireIncrement="2" auth="Container" driverClass="org.gjt.mm.mysql.Driver" factory="com.bill99.seashell.encrypt.C3p0BeanFactory" idleConnectionTestPeriod="3600" jdbcUrl="jdbc:mysql://192.168.126.147:3306/appmobile?useUnicode=true&amp;characterEncoding=UTF-8" maxIdleTime="3600" maxPoolSize="30" minPoolSize="3" name="BILL99/JDBC/WX-PORTAL" password="111111" type="com.mchange.v2.c3p0.ComboPooledDataSource" user="root"/>
 8 
 9 
10  <Resource acquireIncrement="2" auth="Container" driverClass="oracle.jdbc.driver.OracleDriver" factory="com.bill99.seashell.encrypt.C3p0BeanFactory" jdbcUrl="jdbc:oracle:thin:@192.168.127.121:1530:billdb" maxPoolSize="5" minPoolSize="3" name="BILL99/JDBC/SEASHELL121" password="seashell" type="com.mchange.v2.c3p0.ComboPooledDataSource" user="seashell"/> 
11 
12 </Context>

 

三,解决思路 

3.1,jar包

 1         <dependency org="junit" name="junit" rev="4.12" conf="zip->default"/>
 2         <dependency org="org.hamcrest" name="hamcrest-core" rev="1.3" conf="zip->default"/>
 3         <dependency org="org.hamcrest" name="hamcrest-library" rev="1.3" conf="zip->default"/>
 4         <dependency org="org.springframework" name="spring-test" rev="3.2.13.RELEASE" conf="zip->default"/>
 5         
 6         <dependency org="org.springframework" name="spring-data-redis" rev="1.6.2.RELEASE" conf="zip->default"/>
 7        <dependency org="org.springframework" name="spring-aop" rev="3.2.13.RELEASE" conf="zip->default"/>
 8         <dependency org="org.springframework" name="spring-beans" rev="3.2.13.RELEASE" conf="zip->default"/>
 9         <dependency org="org.springframework" name="spring-context" rev="3.2.13.RELEASE" conf="zip->default"/>
10         <dependency org="org.springframework" name="spring-context-support" rev="3.2.13.RELEASE" conf="zip->default"/>
11         <dependency org="org.springframework" name="spring-core" rev="3.2.13.RELEASE" conf="zip->default"/>
12         <dependency org="org.springframework" name="spring-expression" rev="3.2.13.RELEASE" conf="zip->default"/>
13         <dependency org="org.springframework" name="spring-tx" rev="3.2.13.RELEASE" conf="zip->default"/>
14         <dependency org="org.springframework" name="spring-aspects" rev="3.2.13.RELEASE" conf="zip->default"/>
15         <dependency org="org.springframework" name="spring-jdbc" rev="3.2.13.RELEASE" conf="zip->default"/>
16         <dependency org="org.springframework" name="spring-jms" rev="3.2.13.RELEASE" conf="zip->default"/>
17         <dependency org="org.springframework" name="spring-orm" rev="3.2.13.RELEASE" conf="zip->default"/>
18         <dependency org="org.springframework" name="spring-web" rev="3.2.13.RELEASE" conf="zip->default"/>
19         <dependency org="org.springframework" name="spring-webmvc" rev="3.2.13.RELEASE" conf="zip->default"/>
20         <dependency org="mysql" name="mysql-connector-java" rev="5.1.12" conf="zip->default"/>
21         <dependency org="org.apache" name="catalina" rev="6.0.39" conf="compile->default"/>

 

3.2,/src/test/java/MdpTest.java测试类

 

 1 import javax.annotation.Resource;
 2 
 3 import org.junit.Test;
 4 import org.junit.runner.RunWith;
 5 import org.springframework.test.context.ContextConfiguration;
 6 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 7 
 8 import com.bill99.boss.domain.external.message.builder.impl.SafetyBankUploadImpl;
 9 
10 @RunWith(SpringJUnit4ClassRunner.class)  //使用junit4进行测试  
11 @ContextConfiguration(
12         {
13             "classpath:context/init/envPropertyLoader.xml" ,
14             "classpath:context/init/context-ds.xml",
15             "classpath*:context/*.xml",
16             "classpath*:context/ibatis/*.xml",
17             "classpath*:context/service/*.xml",
18             "classpath:context/init/thunderClient.xml"
19             
20             }) //加载配置文件) //加载配置文件
21 public class MdpTest {
22     @Resource
23     private SafetyBankUploadImpl SafetyBankUploadImpl;
24     @Test
25     public void test() {
26         SafetyBankUploadImpl.buildPictureFile("812110058130012", "1");
27         System.out.println("666");
28     }
29 }

 classpath中的别乱了顺序,要严格按照原来的加载顺序来写。

3.3,/src/test/resources/context/init/context-ds.xml下的xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans  xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 7             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
 8             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
 9             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
10 
11     
12  
13      <bean id="dataSource" class="com.bill99.boss.ds.util.DynamicDataSource" >  
14         <property name="targetDataSources">  
15             <map key-type="java.lang.String">  
16                 <entry key="appmobile" value-ref="mobileDS" ></entry> 
17                 <entry key="org" value-ref="bossDS" ></entry>  
18             </map>  
19         </property>  
20         <property name="defaultTargetDataSource" ref="defaultDataSource" >  
21         </property>  
22     </bean>   
23     
24     <bean id="defaultDataSource"  
25             class="org.springframework.jdbc.datasource.DriverManagerDataSource"  
26             p:driverClassName="oracle.jdbc.driver.OracleDriver"   
27             p:url="jdbc:oracle:thin:@192.168.5.100:1530:billdb"  
28             p:username="seashell" p:password="seashell" />
29     
30     <bean id="mobileDS"  
31             class="org.springframework.jdbc.datasource.DriverManagerDataSource"  
32             p:driverClassName="org.gjt.mm.mysql.Driver"   
33             p:url="jdbc:mysql://192.168.126.147:3306/appmobile?useUnicode=true&amp;characterEncoding=UTF-8"  
34             p:username="root" p:password="111111" />
35 
36     <bean id="bossDS"  
37             class="org.springframework.jdbc.datasource.DriverManagerDataSource"  
38             p:driverClassName="org.gjt.mm.mysql.Driver"   
39             p:url="jdbc:mysql://192.168.126.147:3306/boss?useUnicode=true&amp;characterEncoding=UTF-8"  
40             p:username="root" p:password="111111" />
41 
42     <bean id="orgjdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
43         <constructor-arg ref="bossDS" />
44     </bean>
45 
46     <bean id="appmobilejdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
47         <constructor-arg ref="mobileDS" />
48     </bean>
49     
50     <bean id="seashelljdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
51         <constructor-arg ref="defaultDataSource" />
52     </bean>
53     
54     <bean id="dataSourceProxy" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
55         <constructor-arg ref="defaultDataSource"></constructor-arg>
56     </bean>
57     
58     <alias name="dataSourceProxy" alias="seashellDS" />
59     <alias name="dataSourceProxy" alias="authenticationDS" />
60     <alias name="dataSourceProxy" alias="authorizationDS" />
61     <alias name="dataSourceProxy" alias="logDS" />
62     <alias name="dataSourceProxy" alias="accountingDS" />
63     <alias name="dataSourceProxy" alias="cosDS" />
64     <alias name="dataSourceProxy" alias="metadataDS" />
65     <alias name="dataSourceProxy" alias="notificationDS" />
66     <alias name="dataSourceProxy" alias="productDS" />
67     <alias name="dataSourceProxy" alias="marketingDS" />
68     <alias name="dataSourceProxy" alias="memberappDS" />
69     <alias name="dataSourceProxy" alias="gatewayDS" />
70     <alias name="dataSourceProxy" alias="pseDS" />
71     <alias name="dataSourceProxy" alias="fundoutDS" />
72     <alias name="dataSourceProxy" alias="memberinfoDS"/>
73 
74 
75     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
76         <constructor-arg ref="dataSource" />
77     </bean>
78 
79     <bean id="transactionManager"
80         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
81         <property name="dataSource" ref="bossDS" />
82         <property name="globalRollbackOnParticipationFailure" value="false" /> 
83     </bean>
84     <aop:config>
85         <aop:advisor
86             pointcut="@within(org.springframework.transaction.annotation.Transactional)"
87             advice-ref="txAdvice" order="1"/>
88     </aop:config>
89     
90     <tx:advice id="txAdvice">
91         <tx:attributes>
92             <tx:method name="getToAuthList" propagation="REQUIRES_NEW"/>
93             <tx:method name="*" rollback-for="java.lang.Exception"/>
94         </tx:attributes>
95     </tx:advice>
96     
97 </beans>

 

 

 3.4,图示

 

/src/test/resources/context/init/context-ds.xml下的xml文件级别要高于

/src/main/resources/context/init/context-ds.xml下的jar包,名称一样的话包括包名,test中的会把main下的替换掉的。

3.5,如果还报错的话把/src/main/resources/context/init/context-ds.xml下的context-ds.xml文件也替换掉

3.6,添加数据库驱动jar包

 3.7,假如有内存溢出的话,则这样配置一下。

 

 

 

 -Xms512m -Xmx512m -XX:MaxNewSize=512m -XX:MaxPermSize=512m

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值