unit testingServiceLoader

我有一个方法,使用ServiceLoader使用资源加载服务。

 public List getContextData(int Id) { List list = new ArrayList(); ServiceLoader serviceLoader = ServiceLoader.load(ContextPlugin.class); for (Iterator iterator = serviceLoader.iterator(); iterator.hasNext();) { list .addAll(iterator.next().getContextData(Id)); } return list; } 

我应该如何使用Junit对上述方法进行unit testing?

您需要将“provider-configuration file”复制到测试类目录中。

假设您的测试类文件位于

 test/classes/ 

您需要将“provider-configuration file”复制到

 test/classes/META-INF/services/your.package.ContextPlugin 

如何复制文件取决于您的构建工具(例如maven,gradle,ant,…)

作为maven的示例,您应该将它们存储在test resources文件夹中。

 src/test/resources/META-INF/services/your.package.ContextPlugin