大佬教程收集整理的这篇文章主要介绍了尝试使用谓词、标准和规范为存储库接口编写 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,请注明来意。