zoukankan      html  css  js  c++  java
  • 使用junit进行Spring测试

    这几天在做SpringMVC的项目,现在总结一下在测试的时候碰到的一些问题。

    以前做项目,是在较新的MyEclipse(2013)上面进行Maven开发,pom.xml 文件是直接复制的,做测试的时候都是比较顺利的。然而这次,是在Myeclipse 8.5 上面开发,用的是JavaEE5,在测试的时候,就碰到了不少问题,有时候快被搞死!

    一般来说,我们给测试类单独一个包,同时给spring一份测试的配置文件(复制production的配置文件,删除不用的组件,如 shiro,ehcache等暂时用不到的)。
    我用到的组件版本:
    1. Spring 4.0.6
    2. Hibernate 4
    3. junit 4.8.2
    注意,进行注解形式的spring-test,需要引入spring-test-4.0.6.RELEASE.jar
    接着,开始别写测试类,这里用一个汽车实体的DAO做例子
    首先是Car.java,简单起见,Car就只有name属性。

    测试类:
    1. @RunWith(SpringJUnit4ClassRunner.class)
    2. @ContextConfiguration(locations = { "classpath*:test/root-context.xml" })
    3. @Transactional(readOnly=false)
    4. public class TestCarDao {
    5. @Autowired
    6. private CarDao dao;
    7. @Test
    8. public void test(){
    9. Car c = new Car();
    10. c.setName("0--0-----00--");
    11. dao.save(c);
    12. }
    13. }
    可以看到,使用注解来配置junit还是很方便的。
    使用 junit 运行测试类,一开始出现了:java.lang.NoClassDefFoundError: Ljavax.persistence.ForeignKey() 的错误
    经排查,发现时javaEE5 的javaee.jar 没有ForeignKey 这个注解。


    这时,可以配置一些junit的运行环境,删除javaEE5的引用,如下图所示:


    再次运行,如果出现找不到servlet.**** 类的错误,那么可以加入自己的 servlet.api.jar 到项目class path中。
    我用的是 :servlet-api-2.5.jar

    现在test运行正常。

    spring test 是默认事务回滚的,就是说在test中进行的数据库操作,都不会对真实的数据有影响(除了表结构的update操作),这时,如果需要对数据进行修改,可以取消spring 的回滚,在test方法上加入以下注解:
    1. @Rollback(false)






  • 相关阅读:
    python3 get/post/使用代理/自定义header/自定义Cookie
    网页定位点击事件js响应函数教程(Chrome)
    burpsuite只拦截特定网站数据包教程
    AWVS和AppScan使用代理进行扫描教程
    kdbg安装使用教程(kali)
    kali-rolling安装nessus 7并创建扫描任务教程
    WebGoat 8安装、配置、使用教程(CentOS)
    应用层协议与传输层、网络层、数据链路层在编码上的区别
    Oracle Linux下载教程(以Oracle Linux 6.9为例)
    su和su -的区别
  • 原文地址:https://www.cnblogs.com/nerve/p/4013627.html
Copyright © 2011-2022 走看看