Spring 对于单元测试来说,我感觉还是挺方便的。
我们可以用maven来构建项目,这样对于包的依赖就交给maven处理。
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.myapp</groupId> <artifactId>guiapp</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <artifactId>logGUIApp</artifactId> <packaging>jar</packaging> <name>my app </name> <description>log in interface</description> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-atinject_1.0_spec</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.1.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.1.1.RELEASE</version> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>3.1.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>3.1.1.RELEASE</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> </dependencies> </project>
大概就这么一个POM 文件
接下来我们还是关注如何使用Spring做单元测试。
还是来一个AbstractSpringTestCase 母类。
import java.io.File; import javax.annotation.Resource; import org.junit.BeforeClass; import org.junit.runner.RunWith; import org.springframework.context.ApplicationContext; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * This class provides convenient afterTestClass and beforeTestClass methods from Spring Framework which subclasses can * override to perform actions once per test class. * */ @RunWith(SpringJUnit4ClassRunner.class) public abstract class AbstractSpringTestCase extends AbstractJUnit4SpringContextTests { protected static File basedir = new File( System.getProperty( "basedir", "." ) ); protected static File builddir = new File( basedir, "target" ); @Resource protected ApplicationContext applicationContext; /** * This allows eclipse and maven to have the same basedir */ @BeforeClass public static void beforeBaseClass() { System.setProperty( "basedir", System.getProperty( "basedir", "." ) ); System.setProperty( "derby.system.home", System.getProperty( "derby.system.home", "./target" ) ); } }
大家看到这个类的一个注解 @RunWith 也就是JUnit使用了指定的类来启动测试
然后就交给SpringJUnit4ClassRunner 了。这个类 会寻找你的配置文件,这里我更喜欢用注解来指定
请看一个简单测试类。
@ContextConfiguration(locations = { "classpath:/com/myapp/guiapp/jdbc/test/applicationContext.xml" }) public class JdbcTest extends AbstractSpringTestCase { @Inject private MyAppJdbcConnectionFactory myAppJdbcConnectionFactory; @Inject private Storage storage; @Inject private TcpServerTask tcpServerTask; private int port; @Before public void before() { port = tcpServerTask.getPort(); } @BeforeClass public static void beforeClass() throws Exception { System.setProperty( "javax.net.ssl.keyStore", basedir + "/target/etc/mc.ks" ); System.setProperty( "javax.net.ssl.trustStore", basedir + "/target/etc/mc.ts" ); System.setProperty( "javax.net.ssl.keyStorePassword", "changeit" ); System.setProperty( "javax.net.ssl.trustStorePassword", "changeit" ); } @Test public void testJdbcDirectAccessToStorage() throws Exception { Connection connection = null; try { // just enough to get JDBC connect direct to storage with same jvm, ie no tcpserver involved String goodUrl = "jdbc:myapp:DummyTable"; String badUrl = "jdbc:myapp:DummyTableBad"; try { connection = myAppJdbcConnectionFactory.getConnection( badUrl, "", "", null ); Assert.fail( "Able to create connection with invalid URL" ); } catch ( DataProviderException e ) { } connection = myAppJdbcConnectionFactory.getConnection( goodUrl, "", "", null ); Assert.assertNotNull( connection ); } finally { ConnectionUtils.closeQuietly( connection ); } } }
@ContextConfiguration 指定了此测试类使用的bean配置文件。
在这个文件中,我们就可以定义测试需要的一些bean
<beans default-lazy-init="true" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <import resource="classpath:com/myapp/jdbc/applicationContext.xml" /> <bean id="tcpServerTask" class="com.myapp.transport.server.internal.TcpServerTask"> <property name="enableSSL" value="false" /> </bean> </beans>
然后就使劲折腾吧。
相关推荐
在IT行业中,构建一个高效的Java应用开发环境是至关重要的,而"Maven+Spring+MyBatis+MySQL+JUnit"的组合则是一个常见的选择。这个框架集合涵盖了项目构建、依赖管理、业务逻辑处理、数据库交互以及单元测试等多个...
标题中的“hibernate+spring+junit+ant+mysql”是一个经典的Java开发组合,它涵盖了五个重要的技术领域:Hibernate作为对象关系映射框架,Spring作为全面的轻量级框架,JUnit用于单元测试,Ant作为构建工具,以及...
这里的`SpringJUnit4ClassRunner`是JUnit的扩展,它会启动Spring容器并初始化测试类中的bean。 接着,我们可以使用`@Autowired`注解来自动注入需要的依赖。假设我们有一个`MyService`服务需要在测试中使用: ```...
标题中的"Structs2+Spring+hibernate+jdom+junit+读取excel+serve2005+oracle+mysql 架包"涉及到一系列在Java开发中常用的框架和技术,这是一套集成的开发环境,可以帮助开发者快速搭建企业级应用。下面将对这些技术...
总之,Spring+JUnit4+Ant的组合为Java开发提供了强大的单元测试能力。通过合理配置和使用这些工具,开发者可以更高效地进行测试,保证代码质量,降低维护成本。在压缩包文件"junitTest"中,可能包含了示例的测试代码...
这是一个基于Spring3、MyBatis3和JUnit4的可运行项目示例,旨在提供一个完整的、可测试的Java Web应用程序框架。这个项目的核心是利用Spring作为应用的ioc(Inversion of Control,控制反转)和aop(Aspect Oriented...
【标题】"spring+springmvc+mybatis+maven+junit整合"是一个常见的Java Web开发框架集成,这个项目旨在为初学者提供一个基础的、可运行的示例,以理解这些技术如何协同工作。 【Spring框架】是核心的依赖注入(DI)...
Struts2+Spring+Hibernate 中的Action单元测试环境搭建 在软件开发中,单元测试是一种非常重要的测试方法,可以帮助我们确保代码的可靠性和稳定性。在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境...
【标题】"spring+springMVC+mybatis+maven+junit+mysql" 是一个常见的Java Web项目技术栈,它涵盖了从后端开发到数据库管理,再到自动化构建和测试的完整流程。下面将详细阐述这些技术及其在项目中的作用。 ...
在IT行业中,构建Java应用程序时,常常会使用到"Maven+Spring+MyBatis+JUnit"这样的技术栈。这是一个高效且灵活的组合,能够帮助开发者快速地开发、测试和部署项目。下面将详细阐述这些技术及其在实际项目中的应用。...
标题中的"Spring+Hibernate+junit+aop"是一个经典的Java企业级开发组合,这些技术都是Java后端开发中的重要组成部分。让我们逐一深入理解这些知识点: 1. **Spring**:Spring 是一个开源的应用框架,核心功能包括...
本项目涉及的技术栈包括Hibernate、Spring、Ant以及JUnit,这些都是Java开发中至关重要的工具和框架。下面将详细阐述这些技术及其在项目中的应用。 1. **Hibernate**: Hibernate是一个优秀的对象关系映射(ORM)...
标题中的“毕业设计&课设--基于Structs+Hibernate+Spring+mahout+bootstrap+junit.zip”揭示了一个软件开发项目,该项目使用了多种技术栈,主要用于教育或实践目的,如毕业设计或课程设计。这个项目涉及到的主要技术...
JUnit是Java语言的一个单元测试框架,用于编写和运行可重复的测试。开发者可以利用JUnit编写测试用例,确保代码的功能正确性,提高代码质量。在项目开发过程中,Junit起到了关键的测试保障作用,帮助尽早发现和修复...
在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建企业级应用程序提供了全面的解决方案。Spring4是其一个重要的版本,引入了许多增强特性和性能优化。Junit4.8则是Java单元测试的重要工具,它使得开发者...
标题 "springboots+mybatis+junit+oracle.7z" 涉及到的是一个集成开发环境,其中包含了四个核心技术:SpringBoot、Oracle数据库、MyBatis和JUnit。让我们详细了解一下这些技术和它们如何相互协作。 **SpringBoot** ...
编程语言+JAVAspring+测试...它介绍了JAVAspring的测试框架的概念、原理和作用,以及如何使用JAVAspring的测试框架来进行单元测试,包括JUnit、TestNG、Mockito、Spring Test等内容,以及一些配置文件和注解的用法。
使用java框架: hibernate + struts + spring + bootstarp + mahout 实现功能: 后台图书管理: 图书的增删改查, 后台类目。 前台书店: 图书的分页查看, 前台类目, 多条件查询, 智能推荐, 购物车, 支付...
《Spring4与JUnit的简单测试实践》 在Java开发领域,Spring框架以其强大的功能和灵活性深受开发者喜爱。Spring4作为其一个重要的版本,引入了许多改进和优化,使得测试变得更加便捷。而JUnit作为Java单元测试的事实...
这里我们关注的是基于Java技术栈的Web应用环境,具体包括Hibernate4、SpringMVC、JUnit4和log4j这四个核心组件。下面将详细介绍这些组件以及如何整合它们进行环境搭建。 **1. Hibernate4** Hibernate是一个开源的...