获取测试输入以测试服务层CRUD操作

时间:2014-07-07 14:54:50

标签: testng dao service-layer testng-dataprovider

我有一个服务层,其中包含将数据插入db,更新数据和从db中删除数据的方法,这些方法调用DAO层来获取这些方法的定义。在客户端软件包中,我有一个测试类,我在其中获取调用服务层的操作的用户输入。

我的服务类看起来如下:

public class Service extends AbstractService {
        public void createEmp(Emp emp) {
            EmpDAO empDao = new EmpDAO();
            empDao.insertEmp(emp);
        } 
        public int updateEmp(int empId, Emp emp) {
            EmpDAO empDao = new EmpDAO();
            int rows_affected = empDao.updateEmp(empId, emp);
            return rows_affected;
        }
        public int deleteEmp(int empId) {
            EmpDAO empDao = new EmpDAO();
            int rows_affected = empDao.deleteEmp(empId);
            return rows_affected;
        }
}

和测试类如下所示:

public class Application {

    public void insertData(){
        Emp em = new Emp();
        Service service = new Service();

        //insert data into Employee table  
        em.setEmpName("aaaaaa");
        em.setDeptId(2);
        service.createEmp(em); 
    }
    public void updateData(){
        // update employee
        em.setDeptId(2);
        .....
        service.updateEmp(2,em);
        .....           
    }
    public void deleteData()
        //Delete data from Employee table
        service.deleteEmp(2);

    }
}

现在我想编写一个测试类来使用TestNG测试我的方法。我不知道如何使用@DataProvider为插入操作提供输入,以便在输入更多时调用它。

1 个答案:

答案 0 :(得分:0)

以下两种方法使用insertData为您的@DataProvider方法提供示例:

@DataProvider(name = "test2")
public static Object[][] insertTestData() {
    return new Object[][] {{"aaaaaa", 2}, {"other", 3}};
}

@Test(dataProvider = "test2")
public void insertData(String empName, Integer deptId){
    Emp em = new Emp();
    Service service = new Service();

    //insert data into Employee table  
    em.setEmpName("aaaaaa");
    em.setDeptId(2);
    service.createEmp(em); 
}