程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了尝试使用谓词、标准和规范为存储库接口编写 Junit大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决尝试使用谓词、标准和规范为存储库接口编写 Junit?

开发过程中遇到尝试使用谓词、标准和规范为存储库接口编写 Junit的问题如何解决?下面主要结合日常开发的经验,给出你关于尝试使用谓词、标准和规范为存储库接口编写 Junit的解决方法建议,希望对你解决尝试使用谓词、标准和规范为存储库接口编写 Junit有所启发或帮助;

我尝试为存储库接口编写 junit,但不知何故它有问题。

我的界面:

@Repository
public interface SampleRepository extends JpaRepository<SampleEntity,Long>,JpaSpecificationExecutor<SampleEntity> {

    @EntityGraph(attributePaths = { "SamplsHistory"},type = EntityGraph.EntityGraphType.LOAD)
    public List<TestEntity> findAll(Specification<TestEntity> spec);
   
    public static Specification<SamplsEntity> fetchSamplssspecification(SampleSearchCriteria criteria) {
        return (rootEntity,cq,cb) -> {
            List<PreDicate> preDicates = new ArrayList<>();
            
            **if (CollectionUtils.isnotEmpty(criteria.getIDs())) {
                In<Long> inID = cb.in(rootEntity.get(SamplConstants.Sampls_ID));
                criteria.getIDs().forEach(inID::value);
                preDicates.add(inID);
            }
            
            if (StringUtils.isnotEmpty(criteria.getSearchText())) {
                PreDicate apname= cb.like(rootEntity.get(SampleConstants.Sampls_Name),"%" + criteria.getSearchText() + "%");
                preDicates.add(cb.or(apName));
            }**
                            
            
            return cb.and(preDicates.toArray(new PreDicate[preDicates.size()]));
        };

我尝试为此编写了 Junit,但无法做到>

我的界面:

@RunWith(mockitoJUnitRunner.class)
class SampleRepositoryTest {

    private Root<SampleEntity> root;
    private Criteriaquery<?> cq;
    private CriteriaBuilder cb;

    @Injectmocks
    private SampleRepository SampleRepository;

    @Injectmocks
    private SampleEntity SampleEntity;

    private static final String SEARCH_TERM_liKE_PATTERN = "test%";

    @BeforeEach
    public voID setup() {
        mockitoAnnotations.initmocks(this.getClass());
        SampleRepository = mock(SampleRepository.class);
        cb = mock(CriteriaBuilder.class);
        cq = mock(Criteriaquery.class);
        root = (Root<SampleEntity>) mockito.mock(Root.class);
    }

    @Test
    voID fetchSamplesspecification() {
        SampleSearchCriteria criteria = mock(SampleSearchCriteria.class);
        criteria.setSearchText("Marsh");

        Specification<SampleEntity> spec = (Specification<SampleEntity>) mockito.mock(Specification.class);
        //when(SampleRepository.fetchSamplesspecification(criteria)).thenReturn(spec);

        PreDicate SamplenameIslikePreDicatemock = mock(PreDicate.class);
        when(cb.like(root.get(AccountConstants.Sample_Name),SEARCH_TERM_liKE_PATTERN))
                .thenReturn(SamplenameIslikePreDicatemock);
        when(spec.topreDicate(root,cb)).thenReturn(SamplenameIslikePreDicatemock);

        verify(root,times(1)).get(SampleConstants.Sample_Name);
        verifyNoMoreInteractions(root);
        // verify(cb,times(1)).like(root.get(SampleConstants.Sample_Name),// SEARCH_TERM_liKE_PATTERN);
        verifyNoMoreInteractions(cb);

    }

    }   
}

请检查以上内容以了解junit 是否正确。此外,当我尝试时,代码覆盖率也没有显示,junit 也不成功。

注意:需要覆盖存储库的junit。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的尝试使用谓词、标准和规范为存储库接口编写 Junit全部内容,希望文章能够帮你解决尝试使用谓词、标准和规范为存储库接口编写 Junit所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。