gpt4 book ai didi

java - 在 Java 中使用泛型为类编写什么单元测试?

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:22 24 4
gpt4 key购买 nike

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); }
}

最好为应用程序中的所有现有实体(OrderCustomer、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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com