Получение тестового ввода для тестирования операций CRUD уровня обслуживания
У меня есть сервисный уровень с методами для вставки данных в БД, обновления данных и удаления данных из БД, которые вызывают уровень 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 ответ
Вот 2 метода, которые служат примером для вашего 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);
}