Search code examples
javaweb-servicesjunitdaotestcase

Junit test case for database insert method with DAO and web service


I am implementing a webservice based university management system. This system adds certain courses to database. here below is the code that I am using.

Course.java

public class Course {

    private String courseName;
    private String location;
    private String courseId;


       public String getCourseId()
               {
        return courseId;
            }

    public void setCourseId(String courseId) {
        this.courseId = courseId;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

        public String getLocation() {
        return location;
    }
    public void setLocation(String location) {
        this.location = location;
    }
}

then another file is as below

CourseDaoImpl.java

public class CourseDaoImpl implements IDao {
   Connection conn = null;
   Statement stmt = null;

public CourseDaoImpl(){

try {
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    conn = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/univesitydb", "root", "root");
    stmt = conn.createStatement();

    if (!conn.isClosed())
        System.out.println("Successfully connectiod");
} catch (SQLException e) {
    e.printStackTrace();
} catch (InstantiationException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
}

      @Override
  public String add(Object object) {

Course c = (Course) object ;

String courseId = c.getCourseId();
String courseName = c.getCourseName();
String location = c.getLocation();

String result = "";
int rowcount;

try {
    String query = "Insert into course (courseId,courseName,location) values"
            + " ('"
            + courseId
            + "', '"
            + courseName
            + "', '"
            + location
            + "')";
    rowcount = stmt.executeUpdate(query);
    if (rowcount > 0) {
        result = "true";
        System.out.println("Course inserted successful");
    } else {
        result = "false:The data could not be inserted in the databse";
    }
} catch (SQLException e) {
    e.printStackTrace();
}

return result;
}

the third is the Web service file as follows which interacts with the previous two and adds data to database.

CourseService.java

package edu.service;

          import edu.dao.IDao;
          import edu.dao.impl.CourseDaoImpl;
          import edu.db.entity.Course;

       public class CourseService {

     public String addCourse(String courseId, String courseName, String location)
    {   
       Course c = new Course();
       c.setCourseId(courseId);
       c.setCourseName(courseName);
       c.setLocation(location);     
       IDao dao = new CourseDaoImpl();
       return dao.add(c);   
     }

Looking at my code listings can any body suggest me how do I write test case for my add method. I am totally beginner for JAVA, I took help from my friends to learn this java part and Now need to implement Junit test for my database methods like add course above.

Please suggest some thing that I can learn , read and use to implement Junit testing for my database methods.


Solution

  • This is one sample dao test using junit in spring project.

    import java.util.List;
    
    import junit.framework.Assert;
    
    import org.jboss.tools.example.springmvc.domain.Member;
    import org.jboss.tools.example.springmvc.repo.MemberDao;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    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;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations={"classpath:test-context.xml",
    "classpath:/META-INF/spring/applicationContext.xml"})
    @Transactional
    @TransactionConfiguration(defaultRollback=true)
    public class MemberDaoTest
    {
        @Autowired
        private MemberDao memberDao;
    
        @Test
        public void testFindById()
        {
            Member member = memberDao.findById(0l);
    
            Assert.assertEquals("John Smith", member.getName());
            Assert.assertEquals("john.smith@mailinator.com", member.getEmail());
            Assert.assertEquals("2125551212", member.getPhoneNumber());
            return;
        }
    
        @Test
        public void testFindByEmail()
        {
            Member member = memberDao.findByEmail("john.smith@mailinator.com");
    
            Assert.assertEquals("John Smith", member.getName());
            Assert.assertEquals("john.smith@mailinator.com", member.getEmail());
            Assert.assertEquals("2125551212", member.getPhoneNumber());
            return;
        }
    
        @Test
        public void testRegister()
        {
            Member member = new Member();
            member.setEmail("jane.doe@mailinator.com");
            member.setName("Jane Doe");
            member.setPhoneNumber("2125552121");
    
            memberDao.register(member);
            Long id = member.getId();
            Assert.assertNotNull(id);
    
            Assert.assertEquals(2, memberDao.findAllOrderedByName().size());
            Member newMember = memberDao.findById(id);
    
            Assert.assertEquals("Jane Doe", newMember.getName());
            Assert.assertEquals("jane.doe@mailinator.com", newMember.getEmail());
            Assert.assertEquals("2125552121", newMember.getPhoneNumber());
            return;
        }
    
        @Test
        public void testFindAllOrderedByName()
        {
            Member member = new Member();
            member.setEmail("jane.doe@mailinator.com");
            member.setName("Jane Doe");
            member.setPhoneNumber("2125552121");
            memberDao.register(member);
    
            List<Member> members = memberDao.findAllOrderedByName();
            Assert.assertEquals(2, members.size());
            Member newMember = members.get(0);
    
            Assert.assertEquals("Jane Doe", newMember.getName());
            Assert.assertEquals("jane.doe@mailinator.com", newMember.getEmail());
            Assert.assertEquals("2125552121", newMember.getPhoneNumber());
            return;
        }
    }