Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AEM-查询生成器的JUnit测试用例_Java_Mockito_Junit4_Aem_Powermock - Fatal编程技术网

Java AEM-查询生成器的JUnit测试用例

Java AEM-查询生成器的JUnit测试用例,java,mockito,junit4,aem,powermock,Java,Mockito,Junit4,Aem,Powermock,我们有一个业务需求,即通过特定路径查询资产集,并将过期资产从一个文件夹移动到存档文件夹, 我们如何为下面的代码编写JUnit测试用例 @Reference CommonConfigService commonConfigService ; ResourceResolver resourceResolver ; @Reference QueryBuilder querybuilder; private void queryForAssets() { Session session = r

我们有一个业务需求,即通过特定路径查询资产集,并将过期资产从一个文件夹移动到存档文件夹, 我们如何为下面的代码编写JUnit测试用例

@Reference
CommonConfigService commonConfigService ;
ResourceResolver resourceResolver ;
@Reference
QueryBuilder querybuilder;

private void queryForAssets()
{
    Session session = resourceResolver .adaptTo(Session .class);
    Map<String, String> map = new HashMap<String,String>();
    map.put("path", "myPath");
    map.put("type" ,"dam:Asset");
    map.put("property" ,"prism:ExpirationDate");
    final Query query = queryBuilder.createQuery(PredicateGroup.create(map),session);
    final SearchResults resultSet = query.getResult();
    for(Hit hit: resultSet.getHits())
    {
        //business logic,...iterating through each node path and reading the expiry date properties//
        moveAssetToDestination();
    }
}
@Reference
CommonConfigService CommonConfigService;
ResourceResolver ResourceResolver;
@参考文献
QueryBuilder QueryBuilder;
私有void queryForAssets()
{
Session Session=resourcesolver.adapto(Session.class);
Map Map=newhashmap();
map.put(“路径”、“我的路径”);
地图出售(“类型”、“大坝:资产”);
map.put(“财产”、“棱镜:到期日”);
final Query Query=queryBuilder.createQuery(PredicateGroup.create(map),会话);
final SearchResults resultSet=query.getResult();
for(点击:resultSet.getHits())
{
//业务逻辑,…遍历每个节点路径并读取到期日期属性//
moveAssetToDestination();
}
}
在上面的代码中,最后一个函数
moveAssetToDestination()
将所有过期资产从一个文件夹移动到存档文件夹。 因此,基本上没有方法能够准确地返回任何值。
是否可以为上述代码编写JUnit?

是的,对于mock void方法,通常可以使用Mockito的verify语句来验证是否调用了预期的操作。查看本文中的一些示例:

因此,如果您查看
moveAssetToDestination()
的功能,它可能会调用某种对象上的方法。您可以构造一个测试,其中调用方法的对象是一个mock,然后可以使用verify语句和参数捕捉器来验证是否使用预期参数调用了该方法

或者在queryForAssets方法中,使用
@mock
注释和
@RunWith(MockitoJUnitRunner.class)
queryBuilder
设置为模拟对象。请参阅,以获取此示例。然后您可以进行设置,以便在调用其
createQuery
方法时返回模拟查询对象。然后,可以使用verify语句进行验证,以验证在执行代码时是否在模拟对象上调用了getResult方法。对于在
moveAssetToDestination
方法中作用的任何对象,都可以执行类似的操作