Spring学习总结10(测试)

    技术2022-05-19  25

    mock

    mock测试:就是在测试过程中,对于某些不容易构造或者 不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。

    mock对象:这个虚拟的对象就是mock对象。mock对象就是真实对象在调试期间的代替品。

    在Java阵营中主要的Mock测试工具有JMock,MockCreator,Mockrunner,EasyMock,MockMaker

     

    Test Fixture

    运行被测软件所需要的一切东西。这个“东西”不单只是数据,同时还包括对被测软件的准备。

     

    Spring2.5版本和JDK5.0环境下,提供了测试框架TestContext

    使用TestContext所带来的好处:

    1.跨越各个测试案例执行期的Spring IOC容器缓存(不用每进行一次测试就初始化一次容器)

    2.测试fixture的依赖注入

    3.便利的事务管理(会默认在测试完毕后回滚测试中对数据库所作的操作)

    4.提供了特有的Spring支持类

     

    测试框架TestContext是与JUnit4.4相结合的,是辅助JUnit更好的进行测试。

     

    主要版本需要Spring2.5与JUnit4.4 JUnit高于4.4版本的可以不好使。

     

    需要导入spring-framework-2.5.6/dist/modules/下的spring-test.jar包。

     

    @ContextConfiguration

    标注在测试类上,用于告诉测试类在哪个路径下加载Spring的初始化Bean

    @ContextConfiguration(locations={“xx/yy/beans1.xml”,"xx/yy/beans2.xml”})   路径是相对于WEB-INF的

    如果配置文件在classpath下 则写为:

    @ContextConfiguration(locations={"classpath:beans.xml"})

     

    @Resource

    标注的对象将会从Spring容器中注入

     

    @Before

    将会在@Test方法之前执行,用于初始化测试环境,与@Test方法运行在一个事务中

     

    @After

    将会在@Test方法之后执行,与@Test方法运行在一个事务中

     

    @NotTransactional

    标注的方法不将工作于事务环境下。

     

    继承的父类AbstractTransactionalJUnit4SpringContextTests 中提供了simpleJdbcTemplate对象,可以方便的进行简单数据库操作,可用于插入测试数据等。

    simpleJdbcTemplate只支持JDK5.0或以上版本。

    同时AbstractTransactionalJUnit4SpringContextTests 也提供了一些便捷方法来进行数据库访问

    protected int countRowsInTable(String tableName) :计算数据表的记录数。 protected int deleteFromTables(String... names):删除表中的记录,可以指定多张表。 protected void executeSqlScript(String sqlResourcePath, boolean continueOnError):执行 SQL 脚本文件,在脚本文件中,其格式必须一个 SQL 语句一行。

     

     

    示例代码

    package com.bjsxt.registration.service; import javax.annotation.Resource; import org.junit.Before; import org.junit.Test; import org.junit.Assert; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; import com.bjsxt.registration.model.Userinfo; @ContextConfiguration(locations={"classpath:beans.xml"}) public class ServerTest extends AbstractTransactionalJUnit4SpringContextTests { @Resource(name="userManager") private UserManager um; private Userinfo ui; @Before public void prepareData(){ String sql = "insert into userinfo values('10000','han','qiang')"; this.simpleJdbcTemplate.update(sql); } @Test public void testExist() throws Exception{ ui = new Userinfo(); ui.setId(new Integer(10000)); ui.setUsername("han"); ui.setPassword("qiang"); boolean f = um.exists(ui); System.out.print(f); Assert.assertEquals(true, f); } }

     

     

     

     

     

     

     

     

     

     

     

     


    最新回复(0)