推荐this问题首先。但似乎我的情况是不同的。java中的自动化单元测试用例
我会尽量简短。 (只是我把出代码是相当大的;)
我有一些50岁以上的服务类。并且需要为它们编写单元测试用例。在所有这些测试类中,一些测试是常见的。 (删除,查找等)只是对象类型会在不同的服务类中有所不同。
以下示例将清除图片。
请考虑以下具有CRUD操作的服务类。
public class ObjService {
public Obj addObj(ParamType param, String var) { ... }
public void deleteObj(ParamType param, String var) { ... }
public List<Obj> findAllObj(ParamType param, String var) { ... }
public Obj findById(ParamType param, String var, String objIdToFind) { .. }
public List<Obj> getAllObjs(ParamType param, String var, ObjQuery objQuery) throws Exception { ... }
public Obj updateObj(ParamType param,
String var, Obj objToUpdate) throws Exception { }
}
现在我正在写一个测试案例ObjService类。 (测试框架 - testNG)
public class ObjServiceTest {
//These methods which will differ across all service classes
@Test
public void testAddObj() throws Exception {
addObj();
}
@Test
public void testUpdateObj() throws Exception {
Obj objToUpdate = addObj();
Obj updatedObj = updateObj(objToUpdate);
}
public Obj addObj() throws Exception {
//add obj test data and return the obj object
}
public Obj updateObj(Obj objToUpdate) throws Exception {
//update obj test data and return the updated obj object
}
//Following methods will be common to all classes. Except the name 'obj'
//e.g. For obj2 it would change to testDeleteObj2() { Obj2 obj2Todelete.... etc}
@Test
public void testDeleteObj() throws Exception {
Obj objToDelete = addObj();
deleteObj(objToDelete);
}
public void deleteObj(Obj objToDelete) throws Exception {
//delete the obj object
}
@Test
public void testFindById() throws Exception {
ObjService client = new ObjService();
List<Obj> objs = dsClient.findAllObj(...);
}
@Test
public void testFindAllObjs() throws Exception {}
@Test
public void testGetObjs() throws Exception {}
}
现在。为所有类手动编写常用方法无疑是一项耗时的工作。那么可以通过做一些自动化来减少它吗?
(尽我所能投入至少莫名其妙的方式问题)
编辑: 1)测试类已经继承BaseTestClass其中包含所需的初始设置。所以这是一个问题。 2)请不要忘记部分,其中 重构需要跨 方法不同。
Jon.Please找到编辑的问题。忘了提及基础测试课。 – 2011-02-25 17:05:17
@Ravi:编辑我的答案。 – 2011-02-25 17:10:56