我被分配到旧的web应用程序(JSF 1.2 + Eclipselink),没有像EJB或Spring这样的中间件,应用程序的服务层由直接调用EntityManager的POJO组成。代码的结构就像这样SomeBean(支持bean) - > SomeServices(这里是业务逻辑和数据访问代码的混合),没有单独的DAO层。服务类的代码通常看起来像这样(这里非常简化):
public void someMethod(SomeEntity someEntity, ....) throws SomeServiceExeption {
try{
entitiyManager.getTransaction.begin();
//lotOfLogicHereAndCallingSomeOtherPrivateMethods
entitiyManager.getTransaction.commit();
}catch(Exception e){
log.error("");
if(entitiyManager.getTransaction..isActive()){
entitiyManager.getTransaction.rollback();
}
throw new SomeServiceExeption(e);
}
}
这个应用程序只有很少的测试,几乎没有测试,所以我试图用单元测试覆盖尽可能多的代码(将会有一些变化进入应用程序,需要对遗留代码进行大量更改,不属于测试范围)。我的问题是你如何单独测试这样的代码。我有三个想法:
答案 0 :(得分:0)
我可能会先添加一些集成测试,然后覆盖你想要重构的部分。然后,您可以继续重构更多可单独测试的独立单元。如果重构正确,您可以单独从存储中单独测试您的业务逻辑。
进行一些集成测试总是一个好主意,所以这将是一个很好的起点。
在任何情况下,我都不会重构任何测试未涵盖的代码。