说起JUnit,大家并不陌生,我之前也有过简单的介绍(JUnit简介),对于普通的项目测试,我们只需要继承TestCase即可,但是对于SSH我们需要考虑到Spring的DI注入,这就需要用到我们今天所要讲的主题:JUnit4通过注解测试SSH。
一、为什么使用JUnit4
我先来说下为什么之前的JUnit的简单继承TestCase的测试不能测试SSH的Web项目,大家都知道,我们启动Web项目时要先启动Tomcat,而在Tomcat的启动过程中会读取SSH的各个配置文件,实例化各个注入的类,所以我们的程序中直接使用注解就可以操作各个类。
但是如果是单击的继承TestCase的类,就缺少了读取配置文件的过程,所以当你调用一个类方法时会出现空指针错误,因为类没有实例化。
二、如何使用JUnit4
Junit4的特点就是使用注解,简化了我们的测试代码,测试之前,先引入spring-test.jar和junit4.4.jar包(因为spring.jar和annotation.jar都已经引入了),junit4.4.jar一般在spring2.5.6里有,spring-test.jar如果没有可以在这里下载(文章末尾有这两个jar包的下载链接)。
下面是我对userDao的一个查询方法的测试:
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.core.permission.dao.IUserDao;
import com.core.permission.po.User;
//@RunWith(SpringJUnit4ClassRunner.class)用来声明在Spring环境下进行测试
//@ContextConfiguration(locations={……})用来声明配置文件,把项目中所有的关于ssh的配置文件都声明到里面
//(其实只需要声明与你测试相关的即可,为了以后对于action的测试,所以把所有的配置文件都加了进来)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:com/core/config/hibernate.cfg.xml",
"classpath:com/core/config/springConfig-core.xml",
"classpath:com/core/config/springConfig-dao.xml",
"classpath:com/core/config/springConfig-struts.xml",
"classpath:com/core/config/springConfig.xml",
"classpath:com/core/config/strutsConfig.xml"})
//类名也有限制,要是bean中注入的类的名字
public class userDao {
//@Resource(name="userDao")代表根据名称来查找配置文件,userDao即为配置文件中的名称
@Resource(name="userDao")
private IUserDao<Long, User> userDao;
//@Test注解代表测试用例默认的测试方法,启动时默认执行该方法
@Test
public void userTest() {
User u = userDao.findUserAll().get(0);
System.out.println("用户的id=" + u.getId());
}
}
测试结果:
分享到:
相关推荐
SSH框架是Java开发中常用的三大开源框架——Spring、Struts2和Hibernate的组合,它们各自负责应用程序的不同层面:Spring作为核心容器,管理组件和依赖注入;Struts2处理MVC模式中的视图与控制;Hibernate则专注于...
通常,我们可以为每个服务方法编写JUnit测试用例,利用Mockito等工具模拟数据,确保代码的健壮性。 通过以上步骤,你可以利用MyEclipse有效地搭建一个SSH框架项目,作为后续开发的模板。在实际开发过程中,还需要...
3. **测试工具**:提到了多种用于不同类型测试的工具,如LoadRunner、JMeter(性能测试),AppScan(安全测试),Selenium(自动化测试),JUnit、EasyMock(单元测试),Eclemma/JaCoCo(测试覆盖率),QUnit...
综上所述,"ssh工程项目(有用)3"涵盖了SSH协议的基础知识,SSH服务的配置与管理,以及基于SSH的Java Web开发框架——Spring SSH的使用。通过学习和实践这个项目,开发者能够提升网络安全意识,掌握SSH在实际项目中的...
10. **单元测试和集成测试**:SSH框架的每个组件都可以独立测试,Spring提供了Mockito等工具进行单元测试,而集成测试可以使用Struts2的StrutsTest或Spring的TestNG、JUnit等。 在"SSH框架开发"这个压缩包中,可能...
8. **测试与部署**:在开发过程中,单元测试和集成测试是必不可少的,JUnit和Mockito等工具可以帮助进行测试。项目部署时,通常会将应用打包成WAR或EAR文件,然后部署到应用服务器如Tomcat、Jetty或WebLogic上。 综...
9. **测试**:SSH2项目通常包含JUnit测试,用于验证业务逻辑的正确性和持久化层的数据操作。 通过学习和实践SSH2项目,初学者可以深入理解这三大框架的集成使用,以及Java Web开发的基本流程,为后续的复杂项目开发...
8. **测试与调试**:SSH框架提供了单元测试和集成测试的支持,可以利用JUnit进行单元测试,而Spring的Test模块和Struts2的Struts2 TestNG Plugin可用于集成测试,确保代码质量。 总的来说,SSH框架是一个强大且灵活...
SSH框架是Java开发中常用的三大开源框架——Struts2、Spring和Hibernate的组合,它们各自在Web应用开发中承担着不同的角色。Struts2作为表现层框架,负责处理HTTP请求和视图展示;Spring作为应用层框架,提供依赖...
4. JUnit:JUnit是Java的一个单元测试框架,"junit-4.10的jar.rar"是JUnit 4.10版本的JAR包,用于编写和运行测试用例,确保代码的质量和功能正确性。 5. SSH概述:这个文件可能是对SSH框架的简介或使用指南,帮助...
开发者应学会使用JUnit、Mockito等工具对各个层进行测试,同时利用日志和调试工具进行问题定位。 9. **持续集成与部署**:在项目开发过程中,持续集成工具如Jenkins可以帮助自动化构建和测试,确保代码质量。部署时...
7. **测试**:编写JUnit测试用例,对Action、Service和DAO进行单元测试,确保功能正确无误。 8. **部署运行**:将项目打包成WAR文件,部署到Tomcat服务器上,通过浏览器访问验证SSH1框架是否搭建成功。 在实践中,...
5. 整合测试:通过编写JUnit测试确保各个框架之间的交互正常。 这个“ssh整合框架包”已经进行了瘦身,意味着它可能只包含了最基础和最常用的组件,减少了冗余,有利于开发者快速上手和部署项目。如果你是一名Java ...
7. 测试与部署:编写JUnit测试用例验证功能正确性,最后将项目打包成WAR文件,部署到应用服务器如Tomcat,完成Web应用的发布。 总之,“lty.zip_ssh改数据库_web”中的资源很可能包括了SSH框架与MySQL 5.5数据库...
8. **单元测试和集成测试**:项目可能包含JUnit或TestNG编写的测试用例,用于验证各个组件的正确性,确保系统在部署前的质量。 9. **Maven或Gradle构建工具**:这些工具用于管理和构建项目,依赖管理和构建自动化...
此外,可能还需要集成其他工具,如Maven或Gradle进行项目构建,Eclipse或IntelliJ IDEA作为开发环境,以及JUnit进行测试。 总的来说,这个"班费管理系统(SSH)"项目展示了如何利用Java技术栈构建一个实用的、面向...
9. **第11章 - 基于JavaEE的测试**:测试是软件开发中的重要环节,本章会介绍单元测试、集成测试以及自动化测试工具的使用,如JUnit和Selenium,确保代码的质量和稳定性。 这些课件全面覆盖了JavaEE开发的主要技术...
同时,具备使用JUnit或其他测试工具对这些框架的组件进行单元测试的能力也是面试中可能涉及的技能。 在面试中,能够清晰地阐述这些技术如何在实际项目中应用,以及如何解决遇到的问题,将有助于展现你的专业技能和...
7. **持续集成和自动化测试**:为了保证代码质量和项目进度,开发者通常会采用Jenkins、Maven或Gradle进行持续集成,以及JUnit、Mockito等工具进行单元测试和集成测试。 8. **示例应用**:如果压缩包中的"day_45_...