- 浏览: 190433 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (83)
- J2EE/Core Java (24)
- J2EE/Portal (2)
- J2EE/UI (4)
- J2EE/ATG (1)
- J2EE/Report (1)
- J2EE/Web Service/Rest API (2)
- Design Pattern (2)
- Arithmetic (4)
- Linux (12)
- Ruby&Rails (17)
- Database (5)
- J2EE/Payment (1)
- J2EE/JVM (1)
- Encryption/Decryption (3)
- J2EE/Multi Threading (4)
- SQL (1)
- https://community.teamviewer.com/t5/Knowledge-Base/Where-can-I-download-older-TeamViewer-versions-nbsp/ta-p/7729 (0)
最新评论
引用
本文针对常见的springmvc+spring+springjdbc的架构提供啦一些单元测试和集成测试的范例,附件是完整的demo
示例代码安装:
1 安装maven
2 准备mysql数据库,运行脚本: Spring3\schema\sampledb.sql
3 maven dbunit:export可以导出数据库数据到export.xml
4 maven test可以测试所有testing 代码
5 maven jetty:run 可以启动jetty服务器
1. maven pom 文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wilson</groupId> <artifactId>Spring3</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>Spring3 Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.0.6.RELEASE</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>3.0.6.RELEASE</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.0.6.RELEASE</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.0.6.RELEASE</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.17</version> </dependency> <dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>dbunit</groupId> <artifactId>dbunit</artifactId> <version>2.2</version> </dependency> </dependencies> <build> <finalName>Spring3</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.0.4.v20111024</version> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>dbunit-maven-plugin</artifactId> <version>1.0-beta-3</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.17</version> </dependency> </dependencies> <configuration> <driver>com.mysql.jdbc.Driver</driver> <url>jdbc:mysql://localhost/sampledb</url> <username>root</username> <password>root</password> <type>CLEAN_INSERT</type> <!-- ataset file format type. Valid types are: flat, xml, csv, and dtd Default value is: xml. --> <format>xml</format> <src>src/test/resources/export.xml</src> <dest>src/test/resources/export.xml</dest> </configuration> <executions> <execution> <phase>process-test-classes</phase> <goals> <goal>operation</goal> </goals> <!-- specific configurations 我们可以在这里指定不同的配置--> <configuration> <format>xml</format> <src>src/test/resources/export.xml</src> <type>CLEAN_INSERT</type> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
2 测试spring mvc的controler
public class LoginControllerTest { @Test public void testingHandlerWithUserInSession() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); // LoginCommand command = new LoginCommand(); MockHttpSession session = new MockHttpSession(); session.setAttribute("user", new User()); request.setSession(session); LoginController controller = new LoginController(); ModelAndView mv1 = controller.handle(request, null, null, null); assertEquals(mv1.getViewName(), "target"); } }
3利用easymock对userService类做单元测试
public class UserServiceImplTest extends TestCase { public void testHasMatchUser() { System.out.println("teste1"); UserServiceImpl s = new UserServiceImpl(); UserDao dao = EasyMock.createMock(UserDao.class); s.setUserDao(dao); EasyMock.expect(dao.getMatchCount("tom", "1231")).andReturn(1); EasyMock.expect(dao.getMatchCount("tom", "234")).andReturn(0); EasyMock.replay(dao); assertEquals(s.hasMatchUser("tom", "1231"), true); assertEquals(s.hasMatchUser("tom", "234"), false); } }
4 利用Dbunit对userDao做单元测试
dbunit的测试数据
<?xml version='1.0' encoding='UTF-8'?> <dataset> <table name="t_user"> <column>user_id</column> <column>user_name</column> <column>credits</column> <column>password</column> <column>last_visit</column> <column>last_ip</column> <row> <value>3</value> <value>user001</value> <null/> <value>123456</value> <null/> <null/> </row> </table> </dataset>
测试dao
package com.baobaotao.dao.jdbc; @RunWith(SpringJUnit4ClassRunner.class) @Transactional @TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true) @ContextConfiguration(locations={"classpath:baobaotao-dao.xml","classpath:baobaotao-service.xml"}) public class UserDaoTest extends DBTestCase { public UserDaoTest() { super(); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, "com.mysql.jdbc.Driver" ); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, "jdbc:mysql://localhost/sampledb" ); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, "root" ); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, "root" ); // System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_SCHEMA, "" ); } @Resource private JdbcTemplate jdbcTemplate; @Autowired protected UserDao userDao; @Autowired private DataSource dataSource; private IDatabaseConnection conn; @Before public void initDbunit() throws Exception { super.setUp(); conn = new DatabaseConnection(DataSourceUtils.getConnection(dataSource)); } // @Test @Timed(millis=1000) public void testRegisterUser() throws SQLException, IOException, DatabaseUnitException, ParseException { // SimpleDateFormat dateFormatter = new SimpleDateFormat("dd.MM.yyyy"); User user = new User(); user.setUserId(3); user.setUserName("user001"); user.setPassword("123456"); // user.setCredits(40); // user.setLastIp("192.168.12.7"); // user.setLastVisit(dateFormatter.parse("24.11.2011")); userDao.RegisterUser(user); QueryDataSet actual = new QueryDataSet(conn); actual.addTable("t_user", "select * from t_user where t_user.user_name = 'user001'"); IDataSet expected = new XmlDataSet(new ClassPathResource("com/baobaotao/dao/jdbc/user001.xml").getInputStream()); Assertion.assertEquals(expected, actual); } @Test @Transactional public void testCleanInsertInitial() { String sqlStr = " select count(*) from t_login_log where login_log_id = '9'"; int count = jdbcTemplate.queryForInt(sqlStr); Assert.assertEquals(1, count); } @Override protected IDataSet getDataSet() throws Exception { return new XmlDataSet(new ClassPathResource("export.xml").getInputStream()); } }
5 利用spring的test包做集成测试
@RunWith(SpringJUnit4ClassRunner.class) @Transactional @TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true) @ContextConfiguration(locations={"classpath:baobaotao-dao.xml","classpath:baobaotao-service.xml"}) public class UserServiceIntegrateWithJdbcTestSpring3 { @Resource private JdbcTemplate jdbcTemplate; @Autowired protected UserService userService; @Before public void prepareTestData() { System.out.println("before"); } @Test @Timed(millis=1000) public void testRegisterUser() { User user = new User(); // user.setUserId(2); user.setUserName("johnaaaa"); user.setPassword("123456"); userService.registerUser(user); String sqlStr = " select user_id from t_user where user_name = 'johnaaaa'"; int userId = jdbcTemplate.queryForInt(sqlStr); Assert.assertEquals(userId, user.getUserId()); } @Test public void testUserMatchService() { User user = new User(); // user.setUserId(2); user.setUserName("wilson"); user.setPassword("123456"); userService.registerUser(user); Assert.assertFalse(userService.hasMatchUser("john11", "123456")); Assert.assertTrue(userService.hasMatchUser("wilson", "123456")); } //要求测试方法丢出异常 @Test @ExpectedException(RuntimeException.class) public void testThrowException() { throw new RuntimeException("test"); } @After public void after() { System.out.println("after"); } }
引用
了解 dbunit,easy mock,spring3,maven的资源
http://newwhx2011.iteye.com/blog/1089559
http://www.dbunit.org/howto.html
http://www.iteye.com/topic/475172
- Spring3.zip (76 KB)
- 下载次数: 73
- DBunit.zip (20.1 KB)
- 下载次数: 43
发表评论
-
Start tomcat with port 80 without Linux root user-Use iptables mapping
2016-05-25 17:39 869引用In linux system. only root us ... -
Format XML in JAVA
2016-01-11 12:23 627public static String format ... -
HttpURLConnection下载文件
2015-08-07 11:25 830public class HttpDownloadUtilit ... -
Ehcache RMI Replicated Cluster(RMI集群)
2013-04-25 23:39 1096引用本文是ehcache RMI集群的例子,导入附件中的jav ... -
Integrete unitils for database(dao) testing
2013-02-01 18:39 1722引用Database testing Unit tests f ... -
JAXB入门
2012-10-16 11:59 819引用jaxb是一个读写xml的工具,还可以提供验证,不需要额外 ... -
Freemarker使用入门
2012-10-16 11:54 1052引用freemarker是一种模板标记工具,可以做页面静态化, ... -
perforce java api使用
2012-10-16 11:43 1285引用perforce是种版本管理软件,提供啦完整的java a ... -
XPath 入门
2012-10-16 11:29 909引用xpath可以快速定位获取XML文件中指定属性和值,jdk ... -
Java File Diff-diffutils
2012-09-27 17:35 75371. Maven Dependency <depende ... -
XSD 入门使用
2012-09-18 23:20 813<?xml version="1.0" ... -
nexus-2.1.1安装及使用入门
2012-08-13 22:52 14861. 安装 地址http://www.sonatype.org ... -
File Demo
2012-06-25 22:55 1354package org.springside.examples ... -
Java 访问sharepoint webservice(NTLM & SSL)
2012-06-12 09:47 3805引用遇到需要使用java访问微软的sharepoint的web ... -
Selenium Web Driver入门
2012-05-27 23:17 58841 What is Selenium? 引用Selenium ... -
HttpClient4.1.2 & HtmlUnit2.9 处理文件下载
2012-01-09 18:18 1062TestCode import java.io.Fi ... -
HttpClient4.1.2 & HtmlUnit2.9 NTLM 验证 和 Httpclient4.1.2 https/SSL
2012-01-09 18:13 16291. HttpClient4.1.2 & HtmlUn ... -
HttpClient4登陆ITeye
2012-01-08 23:33 1928import java.io.IOException; im ... -
Spring2集成测试
2011-08-25 22:21 795Spring2测试类继承层次 集成测试例子 public ... -
Learning EasyMock3.0 By Official Example
2011-08-24 16:48 1413Maven Installation+ add followi ...
相关推荐
Spring Boot 单元测试和集成测试实现详解 Springs Boot 是一个基于 Java 的框架,提供了一个便捷的方式来开发基于 Spring 的应用程序。在开发过程中,测试是一个非常重要的步骤,单元测试和集成测试是其中的两种...
总结,Spring Boot的单元测试涵盖多个层次,从简单的类方法测试到复杂的集成测试,都有相应的工具和策略。理解和熟练运用这些知识点,能有效提升开发效率,保证代码质量。在实际项目中,应根据需求选择合适的测试...
这个集成演示项目旨在帮助开发者快速理解和实现基于Spring Boot的Activiti工作流应用,同时包含了单元测试以确保代码质量。 **Spring Boot** Spring Boot是Spring框架的扩展,它简化了创建独立、生产级别的基于...
通过Spring集成单元测试,以后测试service层内容时,就不用getBean()来获得Service层对象了
6. **Integration测试**: `@WebAppConfiguration`和`@SpringBootTest`注解可用于集成测试,它们会启动一个完整的Spring Web应用上下文,让你可以测试服务、控制器以及它们之间的交互。 7. **Transactional测试**: `...
Spring集成TestNG与Mockito框架单元测试方法的文档详细介绍了如何在Java Spring项目中,利用TestNG和Mockito框架进行单元测试。这种测试方法可以帮助开发者快速上手单元测试,并确保代码质量。文档涉及了多个方面,...
在Spring MVC和JPA的开发过程中,单元测试是不可或缺的一部分,它可以帮助我们验证代码的正确性,确保系统各个部分能够按预期工作。本例子聚焦于使用Spring的Test注解进行事务管理的单元测试,这对于数据库操作尤其...
Spring提供了一些工具和库,如Spring Test、Spring Boot Test和Mockito,来帮助开发者有效地进行集成测试。 1. Spring Test:这是Spring框架自带的测试模块,它提供了`@RunWith(SpringRunner.class)`注解,使得...
在本篇“Spring3学习笔记(2)-集成ibatis3进行单元测试”中,我们将深入探讨如何在Spring3框架中整合Ibatis3,并利用它来进行单元测试。这个主题对于理解如何在实际项目中实现数据访问层的测试具有重要意义。在现代...
在Spring MVC框架中,单元测试是确保代码质量的重要步骤,特别是在控制器层(Controller)。...在实际操作时,参考博客中的示例代码和上述步骤,可以更好地理解和实践Spring MVC Controller的单元测试。
其中,Spring对于业务层的单元测试和集成测试提供了丰富的工具和功能,使得开发者能够更加高效地对代码进行验证和调试。本文将深入探讨Spring如何帮助我们进行业务层的测试。 首先,单元测试主要关注的是单个类或...
当我们谈论“Spring2集成测试”,我们指的是利用Spring框架提供的工具和最佳实践来测试整个应用程序的集成部分,确保各个组件协同工作。 集成测试是软件开发过程中的关键步骤,它位于单元测试之后,系统测试之前,...
接下来,我们关注Spring单元测试的实施。在Spring中,我们可以使用`@RunWith(SpringRunner.class)`和`@SpringBootTest`注解来启动一个完整的Spring应用上下文,以便测试Controller层。例如,对于一个名为`...
Spring Boot为此提供了一系列便利工具和依赖,使得设置和执行单元测试变得简单。 首先,要开始在Spring Boot项目中进行单元测试,你需要引入`spring-boot-starter-test`依赖。这个起步依赖包含了多个测试相关的库,...
总之,单元测试是保证代码质量的重要手段,在Struts+Spring的环境下,需要结合JUnit和Mockito等工具,对Action、Service和DAO进行有效的测试,确保每一层的功能都能够正确无误地工作。通过详尽的测试,可以提前发现...
在Spring框架中,进行Dao层的集成单元测试时,常常会结合Dbunit工具来实现数据库相关的测试。Dbunit是一款强大的Java库,它扩展了JUnit,为数据库提供了结构化数据的导入和导出,使得测试更加方便和可靠。下面将详细...