springtest整合junit并结合logback打印mybatis执行详细信息

来源:互联网 发布:遇到网络诈骗400怎么办 编辑:程序博客网 时间:2024/06/07 02:30

解决的问题:1.使用Junit进行单元测试时,加载spring配置文件交由junit单独管理。我只管@Test下的方法。

      2.junit进行mybatis事务方法我想打印详细信息,通过日志查看事务是否起作用。 

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:cn/rjx/spring/sm/bean.xml"}) //junit启动时加载配置文件   @Componentpublic class EmpAction  extends AbstractJUnit4SpringContextTests  {@AutowiredEmpService service;@Testpublic void test01(){Emp emp = service.selectById("1");System.out.println(emp);}@Testpublic void test02(){service.accountChange();}}

@Servicepublic class EmpService{//org.log4j包Logger logger=LoggerFactory.getLogger(EmpService.class);@AutowiredEmpDao empDao;public Emp selectById(String id){return empDao.selectById(id);}@Transactional()public void accountChange() {logger.info("-------add---------");empDao.addSalary("1");int a= 10/0;logger.info("-------update---------");empDao.updateSalary("2");}}


@Repositorypublic interface EmpDao {Emp selectById(String id);void addSalary(String id);void updateSalary(String id);}


Mapper.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.rjx.spring.sm.EmpDao"><select id="selectById"  resultType="cn.rjx.spring.sm.Emp">select * from emp where id=#{id}</select><update id="addSalary">update emp set salary='6000' where id=#{id}</update><update id="updateSalary">update emp set salary='4000' where id=#{id}</update></mapper>

bean.xml


<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><context:component-scan base-package="cn.rjx.spring.sm"></context:component-scan><bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">        <property name="url" value="jdbc:mysql://localhost:3306/test" />        <property name="username" value="root" />        <property name="password" value="123456" />       <!--  <property name="driverClassName" value="com.mysql.jdbc.Driver" /> -->       <!-- 配置初始化大小、最小、最大 --><property name="initialSize" value="1" /><property name="minIdle" value="3" /> <property name="maxActive" value="20" /> <!-- 配置获取连接等待超时的时间 --><property name="maxWait" value="60000" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="60000" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="300000" /><property name="validationQuery" value="true" /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><!-- 配置监控统计拦截的filters -->    <property name="filters" value="stat" />     </bean>    <!-- ==============mybatis配置=========================================== --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <!-- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL映射文件 -->        <property name="dataSource" ref="dataSource" />        <property name="mapperLocations" value="classpath:cn/rjx/spring/sm/*Mapper.xml" />    </bean>    <!-- 配置扫描器 -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <!-- 扫描me.gacl.dao这个包以及它的子包下的所有映射接口类 -->        <property name="basePackage" value="cn.rjx.spring.sm" />        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />    </bean>              <!-- ==============mybatis事务配置=========================================== --><!-- 1.1.配置mybaties的事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!--  ######################使用注解配置事务############################ --><!-- 开启注解事务  下面的操作取代了它,如果想使用它,那么需要在使用事务的方法上添加@Transactional 使用了它 下面的就不需要了 -->  <tx:annotation-driven transaction-manager="transactionManager" /> <!-- ######################使用xml配置事务############################--><!-- 1.2. 配置事务属性 就是对事务管理器进行进行设置 以下创建了一个Advice的通知,对事务管理器进行事务的设置,这里的意思是指对于以下开头的方式使用事务的管理 --><!-- <tx:advice id="txAdvice" transaction-manager="transactionManager">--><!-- <tx:attributes> --><!-- <tx:method name="*"  />  --><!-- </tx:attributes> --><!-- </tx:advice> --><!-- 1.3. 配置事务切入点, 再把事务属性和事务切入点关联起来 其实就是把事务应用到具体的类中--> <!-- <aop:config expose-proxy="true">--><!-- <aop:pointcut --><!-- expression="execution(* cn.rjx.spring.sm.EmpService.*(..))" id="txPointcut" />--><!-- <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" /> --><!-- </aop:config> -->     </beans>

pom.xml:


  <dependencies><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-context</artifactId>    <version>5.0.0.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/junit/junit --><dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>4.12</version>    <scope>test</scope></dependency>    <!-- https://mvnrepository.com/artifact/org.springframework/spring-test --> <dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-test</artifactId>    <version>5.0.0.RELEASE</version>    <scope>test</scope></dependency> <!-- springAop --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-aspects</artifactId>    <version>5.0.0.RELEASE</version></dependency><!-- spring事务 --><!-- https://mvnrepository.com/artifact/org.springframework/spring-tx --><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-tx</artifactId>    <version>5.0.0.RELEASE</version></dependency><!-- spring整合mybatis --><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --><dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis-spring</artifactId>    <version>1.3.1</version></dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis</artifactId>    <version>3.4.5</version></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>3.1.14</version></dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid</artifactId>    <version>1.1.4</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc  配置数据源需要--><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-jdbc</artifactId>    <version>5.0.0.RELEASE</version></dependency><!-- 日志打印3个包 --><!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core --><dependency>    <groupId>ch.qos.logback</groupId>    <artifactId>logback-core</artifactId>    <version>1.2.3</version></dependency><!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --><dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-api</artifactId>    <version>1.7.25</version></dependency><!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --><dependency>    <groupId>ch.qos.logback</groupId>    <artifactId>logback-classic</artifactId>    <version>1.2.3</version>    <scope>test</scope></dependency>  </dependencies>



logback.xml:src目录下


<?xml version="1.0" encoding="UTF-8"?><configuration debug="false"><!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--><property name="LOG_HOME" value="/home" /><!-- 控制台输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- 按照每天生成日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder><!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender><!-- 日志输出级别 --><root level="DEBUG"><appender-ref ref="STDOUT" /></root></configuration>

控制台打印信息:



logback参考:http://www.cnblogs.com/warking/p/5710303.html



 
原创粉丝点击