`
zjfshowtime
  • 浏览: 7936 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Junit测试Spring框架下的代码

阅读更多

如何用Junit4测试Spring框架下配置的类


       前几天,我们在做Junit4的单元测试时,遇到了问题,就是Junit无法获得spring的配置环境,即Junit无法得到Spring创建的类实例。
在查阅了网上的一些资料和同事的帮助下,成功的解决了此问题。步骤如下:
1 建立一个test的目录,在此目录下放置所有的JunitTestCase类和TestCase的配置文件
2 将项目中的Spring配置文件(默认名称为applicationContext.xml)复制到test目录下,并重新命名为JunitTestConf.xml。
3 根据Junit测试的需要修改JunitTestConf.xml文件中的内容,如数据库连接等。
4 新建一个名为SpringConfForTest.java的类,在此类中配置Spring启动所需的配置文件,并启动Spring。此类的内容如下:
package test;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.soma.global.WebContextHolder;
public class SpringConfForTest {

@BeforeClass
public static void setUpBeforeClass() throws Exception {

//Spring启动所需要的配置参数文件,其中test/JunitTestConf.xml文件中保存了数据库连接等参数,可根据具体情况做修改
String[] paths = new String[] {"test/JunitTestConf.xml", "com/soma/conf/applicationContext-dao-hr.xml","com/soma/conf/applicationContext-dao.xml","com/soma/conf/applicationContext-dao-bug.xml","com/soma/conf/applicationContext-dao-change.xml","com/soma/conf/applicationContext-dao-common.xml","com/soma/conf/applicationContext-service-hr.xml" };
//启动Spring,得到Spring环境上下文
ApplicationContext ctx = new ClassPathXmlApplicationContext(paths);
//在此类启动时,将Spring环境上下文保存到单根类WebContextHolder中,以提供给其它的测试类使用
WebContextHolder.getInstence().setApplicationContext(ctx);
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Test
public void test(){
//必须要写一个test空方法,否则SpringConfForTest类不会启动
}
}
5 新建TestSuite类,类名为AllTests,类的内容如下所示:
package test;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import test.com.soma.domain.busilogic.hr.HrBusiLogicTest;
import test.com.soma.domain.service.hr.checkOverTimeDateTest;
@RunWith(Suite.class)
@Suite.SuiteClasses({
SpringConfForTest.class,
HrBusiLogicTest.class,
checkOverTimeDateTest.class
})
/**
* 批量执行Junit测试类,把类名写入到上面的Suite.SuiteClasses({})中,用逗号分隔
*/
public class AllTests {
public static Test suite() {
TestSuite suite = new TestSuite("Test for test");
//$JUnit-BEGIN$
//$JUnit-END$
return suite;
}
}
注意:将SpringConfForTest.class放在第一个执行,以启动Spring配置环境,把自己的TestCase类放到后面,用逗号分开。在测试时,只要执行这个TestSuite类就可以了。
6 写自己的TestCase类,以CheckOverTimeDateTest.java为例子,文件内容如下:
public class CheckOverTimeDateTest {
private static HrTbovertimeManager hrTbovertimeManager;
private static ExcuteSqlDAO excuteSqlDAO;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
//从Spring上下文中得到hrTbovertimeManager接口类的实例
hrTbovertimeManager=(HrTbovertimeManager)BeanUtil.getBean("hrTbovertimeManager");

excuteSqlDAO = (ExcuteSqlDAO) BeanUtil.getBean("excuteSqlDAO");
}
@Test
public void testGetProjectList()throws Exception {


List<OvertimeDetailValue> overtimeDetailValueList = new ArrayList<OvertimeDetailValue>();
int index = 9;
for(int i = 1 ;i <= index;i++){
OvertimeDetailValue overtimeDetailValue = new OvertimeDetailValue();
overtimeDetailValue.setOtApplyDate("2009-05-0"+i);
overtimeDetailValueList.add(overtimeDetailValue);
}
String resultStr = hrTbovertimeManager.checkOverTimeDate(overtimeDetailValueList);
assertEquals("false", resultStr);
}

/**
* 导入2009-03月份出勤记录excel文件,返回null表示导入成功,需要先删除3月份的数据
*/
@Test
public void testSaveExcelDutyInformation() throws Exception{
// 在导入3月份出勤记录前先删除3月份的记录,执行delete from hr_tbdutyinformation;
excuteSqlDAO.excuteSql("delete from hr_tbdutyinformation where dutydate>='2009-02-26' and dutydate<='2009-03-25'");
// System.out.println("----------"+System.getProperty("user.dir")+"/src/test/duty200903.xls");
String fileName = System.getProperty("user.dir")
+ "/src/test/duty200903.xls";
assertNull(hrTbdutyInformationManager.saveExcelDutyInformation(fileName));
}
}
说明:BeanUtil.getBean("")相当于WebContextHolder.getInstence().getApplicationContext().getBean(""),只是对此方法做了封装。
7 在Eclipse中,启动AllTests,选择“Run As JunitTest”,即可先启动Spring环境,再依次运行你自己所写的JunitTestCase,是不是很简单哪?赶快动手试试吧。

 

                                                                     原文出处:http://blog.csdn.net/hobbypei/article/details/4409450

分享到:
评论

相关推荐

    junit测试spring,hibernate的dao层代码

    `JUnit` 是Java编程语言中最流行的单元测试框架,它允许开发者编写可重复运行的测试用例,以验证代码的正确性。`Spring` 和 `Hibernate` 分别是Java企业级应用中的两大支柱,`Spring` 提供了一个强大的依赖注入容器...

    junit针对spring mvc三层测试

    而JUnit作为Java领域最常用的单元测试框架,可以帮助开发者确保代码的质量和功能的正确性。本测试着重关注Spring MVC架构中的三层:表现层(Presentation Layer)、业务层(Business Logic Layer)和服务数据访问层...

    spring4+JUnit简单测试

    此外,`spring-in-action`这个文件名可能是指《Spring实战》这本书,这本书深入浅出地介绍了Spring框架的各个方面的使用,包括测试部分,是学习Spring的绝佳参考资料。如果你忘记了压缩包里的内容,不妨重新阅读,...

    spring MVC junit 单元测试(controller)

    在Spring MVC框架中,单元测试是确保代码质量的重要步骤,特别是在控制器层(Controller)。这篇博客主要探讨了如何使用JUnit进行Spring MVC Controller的单元测试。在实际开发中,单元测试可以帮助我们尽早发现潜在...

    JUnit单元测试框架 张明生PPT课件.pptx

    JUnit 框架的优点是支持测试代码的独立,是 XP 编程思想的体现。它可以提高软件项目的质量和可靠性,减少软件BUG的出现。 JUnit 框架的应用非常广泛,世界上无数软件项目使用它。它是 Java 中开发单元测试的框架...

    Junit 单元测试完整案例

    二、Spring框架的单元测试 1. Spring TestContext Framework:Spring提供的一个测试支持库,它允许我们加载Spring应用上下文,并提供了一套用于测试的工具和API。 2. `@RunWith(SpringRunner.class)`:这是一个...

    javaweb中.java文件测试需要的框架(junit测试).rar

    2. **依赖注入**:Spring框架提供了很好的依赖注入支持,可以通过@Autowired将模拟对象注入到被测试的类中。 3. **集成测试**:虽然JUnit主要用于单元测试,但结合Servlet容器(如Tomcat)和工具如Arquillian,也...

    maven+spring+mybatis+mysql+junit jar项目框架搭建

    在Maven项目中,我们可以利用Maven的Surefire插件来执行JUnit测试,并将测试结果集成到构建报告中。 在文件名"com_spring_mybatis"中,我们可以推测这是项目中与Spring和MyBatis相关的源代码包。通常,这个命名约定...

    利用JUnit和Spring-test对SpringJDBC组件DAO层测试

    Spring-test是Spring框架的一部分,专门用于测试Spring应用。它提供了如`@ContextConfiguration`、`@RunWith(SpringRunner.class)`等注解,使得我们能够加载Spring配置并运行在测试环境中。这使得我们可以在测试中...

    单元测试案例junit +spring mvc +springboot

    Spring MVC是Spring框架的一个模块,专注于Web应用程序的模型-视图-控制器(MVC)架构。它简化了处理HTTP请求、数据绑定、视图渲染等工作。在进行单元测试时,可以利用Spring MVC的MockMvc类来模拟HTTP请求,测试...

    spring测试示例代码

    在Spring框架中,测试是确保代码质量、可维护性和正确性的重要组成部分。Spring提供了丰富的测试支持,包括单元测试和集成测试。本示例代码聚焦于使用JUnit进行Spring测试,这是一项核心的Java测试框架,广泛用于...

    Spring整合Junit框架进行单元测试Demo

    当我们需要对Spring框架中的组件进行单元测试时,通常会将JUnit与Spring进行整合。本篇文章将详细介绍如何在Spring环境中利用JUnit进行单元测试,以及在这个过程中可能遇到的关键知识点。 首先,我们需要了解Spring...

    spring-Test,Junit4 jar,和测试代码

    Spring Test模块是Spring框架的一部分,专门用于测试Spring应用,它提供了丰富的功能来支持单元测试和集成测试。而JUnit4则是一个流行的Java单元测试框架,它简化了编写和执行测试代码的过程。接下来,我们将深入...

    基于Spring的JUnit单元测试

    在Java开发领域,Spring框架是应用最广泛的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)框架之一,而JUnit则是Java语言中进行单元测试的标准库。本篇文章将详细探讨如何在Spring环境中利用...

    SSM中进行单元测试Junit4+spring-test所需jar包

    spring-test是Spring框架的一部分,专门用于测试Spring应用程序。它提供了与Spring容器集成的测试工具,如`@ContextConfiguration`用于加载配置,`@Autowired`自动注入依赖,以及`@MockBean`和`@SpyBean`来创建模拟...

    spring junit

    标题中的“spring junit”指的是Spring框架与JUnit测试框架的结合使用。在Java开发中,单元测试是确保代码质量的重要步骤,而JUnit是最流行的Java单元测试框架。Spring框架提供了丰富的功能,包括依赖注入、AOP...

    spring-dm junit

    Spring DM是Spring框架的一个扩展,专门用于OSGi(开放服务网关规范)环境,它允许开发者在模块化的应用程序中管理和部署Spring组件。 在OSGi环境中,Spring DM允许我们创建可独立部署和管理的模块,而JUnit则是一...

    SpringBoot中整合Junit测试示例源码

    Spring Test是Spring框架的一部分,提供了在Spring环境中运行测试的能力。它包含了`@SpringBootTest`注解,用于启动一个完整的Spring Boot应用上下文,这样我们就可以在测试中注入任何需要的bean。此外,`@...

    各种框架的junit测试.rar

    总结起来,"各种框架的junit测试.rar"提供的资源可以帮助开发者学习如何在Spring和Hibernate框架下有效地使用JUnit进行单元测试。通过这些测试用例,开发者可以提升对框架的理解,保证代码质量,并遵循最佳实践。在...

    spring3 junit 测试 + word

    在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建可维护、可扩展的Web应用程序提供了强大的支持。Spring3是该框架的一个版本,它引入了许多改进和新特性,提高了开发效率和应用的灵活性。JUnit是Java...

Global site tag (gtag.js) - Google Analytics