作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
以 article 中定义的 JpaDao
类为例:
public abstract class JpaDao<K, E> implements Dao<K, E> {
protected Class<E> entityClass;
@PersistenceContext
protected EntityManager entityManager;
public JpaDao() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[1];
}
public void persist(E entity) { entityManager.persist(entity); }
public void remove(E entity) { entityManager.remove(entity); }
public E findById(K id) { return entityManager.find(entityClass, id); }
}
最好为应用程序中的所有现有实体(Order
、Customer
、Book 等)编写单元测试,还是可以接受正如 other question 所暗示的,只为一个实体编写单元测试?关于使用泛型对 Java 类进行单元测试,是否有任何最佳实践?
最佳答案
您可以为继承此类的实体编写一个抽象测试类。
例如:
public abstract class JpaDaoTest<K,E> {
abstract protected E getEntity();
abstract protected JpaDao getDAO();
@Test
public void testPersistCreatesEntity()
{
JpaDao dao = getDAO();
dao.persist(getEntity());
// assert
}
}
假设 getEntity()
正确设置和关系依赖关系,您的泛型类实现的契约应该能够像泛型一样被测试。
因此,通过为通用子类的所有测试用例继承此测试类,您可以免费获得测试。
关于java - 在 Java 中使用泛型为类编写什么单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4728969/
我是一名优秀的程序员,十分优秀!