运行Junit测试时启动@StaticMetaModel

时间:2015-10-23 09:45:35

标签: java jpa junit

我在为使用Spring Data存储库和Daly生成类的服务编写单一测试时遇到问题。

在这个测试中,我正在模拟Spring Data存储库。 但是在我的存储库中,我使用Daly生成的类来获取实体字段的名称。我的测试失败,因为我的Daly生成的类上的公共静态SingularAttribute字段未初始化。

当我进行集成测试并加载Spring和Hibernate时,这不会发生。我假设当Spring启动时,它会在@StaticMetamodel注释的所有类上生成hibernate填充字段。

我想知道在Junit测试开始时是否有一种简单的方法来填充这些字段而不用手工制作?

也许某些代码会让我的问题更清晰:

我的实体名为PageHits,它关联的daly生成的类是PageHits _:

import javax.annotation.Generated;
import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel;

@Generated(value="Dali", date="2015-10-23T10:07:28.339+0200")
@StaticMetamodel(PageHits.class)
public class PageHits_ {
    public static volatile SingularAttribute<PageHits, PagePK> pagePK;
    public static volatile SingularAttribute<PageHits, Integer> numHits;
}

这是我在服务上测试的方法:

@Transactional
public List<PageHits> getMostViewedPage(String baseUrl, int num) {
    Pageable pageable = new PageRequest(0, num, Sort.Direction.DESC, PageHits_.numHits.getName()); //it fail here because PageHits_.numHits is null

    //pageHitsRepository is mocked when running the code
    return pageHitsRepository.findByBaseUrl(baseUrl, pageable).getContent();
}

0 个答案:

没有答案