单元测试ServiceLoader

Pra*_*ath 5 java

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

public List<String> getContextData(int Id)
{
  List<String> list = new ArrayList<String>();
  ServiceLoader<ContextPlugin> serviceLoader =  ServiceLoader.load(ContextPlugin.class);
  for (Iterator<ContextPlugin> iterator = serviceLoader.iterator(); iterator.hasNext();)
  {
    list .addAll(iterator.next().getContextData(Id));
  }
  return list;
}
Run Code Online (Sandbox Code Playgroud)

我应该如何使用Junit对上述方法进行单元测试?

Sub*_*mal 5

您需要将"provider-configuration file"复制到测试类目录中.

假设您的测试类文件位于

test/classes/
Run Code Online (Sandbox Code Playgroud)

您需要将"provider-configuration file"复制到

test/classes/META-INF/services/your.package.ContextPlugin
Run Code Online (Sandbox Code Playgroud)

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

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

src/test/resources/META-INF/services/your.package.ContextPlugin
Run Code Online (Sandbox Code Playgroud)