Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在旧项目中开始编写单元测试是否可行?_Java_Unit Testing_Junit - Fatal编程技术网

Java 在旧项目中开始编写单元测试是否可行?

Java 在旧项目中开始编写单元测试是否可行?,java,unit-testing,junit,Java,Unit Testing,Junit,我想开始为我们的项目编写单元测试(JUnit)。这将使用J2EE1.4和Hibernate3.1,并且连接代码和服务层之间存在紧密耦合(如果我是对的,请更正!) 因此,假设我有保存一些表单值的功能。结构有点像 java public void doGet(ServletRequest request, ServletResponse response) { T_Donation instance - new T_Donation(); instance.setName(requ

我想开始为我们的项目编写单元测试(JUnit)。这将使用J2EE1.4和Hibernate3.1,并且连接代码和服务层之间存在紧密耦合(如果我是对的,请更正!)

因此,假设我有保存一些表单值的功能。结构有点像

java

public void doGet(ServletRequest request, ServletResponse response)
{
    T_Donation instance - new T_Donation();

    instance.setName(request.getParameter("name"));
    instance.setAmount(request.getParameter("amount"));

    MyDAO dao = new MyDAO();
    Boolean b = dao.persistInstance(instance);

    if(b.booleanValue())
    {
        // forward to .jsp file by means of RequestDispatcher
    } 

}
T_型捐赠

public class T_Donation implements Serializable
{
   private String name;
   private String amount;

   // getters, setters
   // equals, hashcode
}
刀类

public class MyDAO
{
    public boolean persistInstance(T_Donation instance)
    {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = null; 
        try
        {
           tx = sesion.beginTransation();
           // setters again if needed
           session.save(instance);           
           tx.commit();
        }
        catch(Exception ex)
        {
             ex.printStackTrace();
             return false;
        } 
        finally
        {
             session.close();
        }
        return true; 
    }

}
代码库就是这样的。我正在学习道模式,我认为在这里也有错误的实现

所以我的问题是,考虑到这个小功能,我将如何开始编写单元测试?需要多少?第一步对我来说真的很难


此外,欢迎对更干净的代码实践提出意见

您可以通过从返回以下代码行返回模拟会话来模拟会话之类的对象:

HibernateUtil.getSessionFactory().openSession();
根据HibernateUtil的实现方式,您可以让util返回一个模拟SessionFactory(如果有一个setter,也可以添加一个)并在测试中设置它

HibernateUtil.setSessionFactory(SessionFactory instance);
如果您没有setter并且无法修改代码,那么您可以使用类似于Powermock的东西来模拟静态方法和构造函数

不管怎样,这就是我要开始的地方