IntellIj 在SSH框架下做Junit测试单元

Junit单元测试

  1. 项目中引入junit组件包,Junit必须使用Spring框架附带的版本,自行从Junit官方网站下载的junit不一定可以使用。
  2. 父类定义为AbstractJUnit4SpringContextTests
  3. 几个Annonation
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations={“/classpath:application-context.xml”})
    @Autowired或者@Resource
    @Test
package com.redis.test;

import javax.annotation.Resource;
import com.redis.bean.User;
import com.redis.dao.BaseDAO;
import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

@Transactional
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:application-context.xml"})
public class TestR {

    @Resource
    private SessionFactory sessionFactory;

    @Resource
    private BaseDAO dao;

    private Logger logger=Logger.getLogger(getClass());

    @Test
    public void test1(){        //assert failure
        Boolean b=true;
        Assert.assertFalse(b);
    }

    @Test
    public void test2(){       //assert success
        String str="test";
        Assert.assertNotNull(str);
    }

    /**
     * 通过sessionFactory获取User类ID为1的用户
     * @param 
     * @return 
     */
    @Test
    public void findById()
    {
        Session session=this.sessionFactory.openSession();
        try
        {
            User user=(User)session.get(User.class, 1);
            logger.debug("ID: " + user.getUserId() + " Name:" + user.getUserName());
            Assert.assertNotNull(user.getUserName());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }finally {
            session.close();
        }
    }

    /**
     * 测试findById方法
     */
    @Test
    public void test3()
    {
            User user=(User)dao.findById(User.class,2);
            logger.debug("ID: " + user.getUserId() + " Name:" + user.getUserName());
            Assert.assertNotNull(user.getUserName());
    }
}

开始单元测试的方法:
鼠标移动到需要测试的方法名上,右击选择 Run’test1()’ 或者 Debug’test1()’即可。
IntellIj 在SSH框架下做Junit测试单元_第1张图片
很明显test1断言不成功,在IntelliJ 上显示为:
IntellIj 在SSH框架下做Junit测试单元_第2张图片
列条为红色说明断言失败,即方法错误。
方法test2()、test3()及 findById()断言成功,显示如下:
IntellIj 在SSH框架下做Junit测试单元_第3张图片
想知道test3()方法中测试了什么,可以从上图中hibernate打印的sql发现,并且也debug出了我要求的信息。
补充:User类只有自增的user_id和string的user_name两个属性,对应数据库中的user表 。测试方法命名不规范,敬请谅解。

你可能感兴趣的:(代码复制)