这是我的基本模块,需要实现 myspi 包中定义的接口。各种提供商都可以提供 MyProvider 实现。基础模块通过 myspi.MyProvider 接口实现使用它们。
module base {
exports myspi;
uses myspi.MyProvider;
}
这是我的示例实现模块,它通过 MyProviderImpl 提供 MyProvider 实现
module myspi.provider {
provides myspi.MyProvider with myspi.provider.MyProviderImpl;
}
当我在基本模块中加载实现时,所有这些工作正常
public static List<MyProvider> getMyProviders() {
var myProviders = new ArrayList<MyProvider>();
for (MyProvider myProvider : ServiceLoader.<MyProvider>load(MyProvider.class)) {
myProviders.add(myProvider);
}
return myProviders;
}
但相同的代码在 Junit 5 测试代码中返回空列表(ServiceLoader 返回 null)。如何使用 Junit 5 测试服务提供程序模块。或者是否有 Junit 的替代方案,允许我们创建测试模块(模块化测试 API),在模块信息中声明“使用 myspi.MyProvider”,并与 getMyProviders( )?
基本上你走在正确的轨道上。当涉及到解析模块是测试运行时时,您需要让 Java 模块系统相信您的测试模块是唯一的来源。
黑盒测试很容易。
模块化世界中的白盒测试,意味着测试模块内的受保护成员和打包私有成员,是很棘手的。至少有两种方法可以实现此目的:a)使用 java 命令行选项在测试启动时配置 Java 模块系统或 b)混合main来源进入test编译时源并维护专用module-info.java
在你的test来源。
请访问博客和示例的链接,网址为如何使用 jdk > 1.8 进行模块化构建为了方便起见,摘录如下:
Examples
背景和其他资源
- https://github.com/junit-team/junit5-samples/tree/master/junit5-modular-world
- https://github.com/forax/pro
- https://blog.codefx.org/java/ Five-command-line-options-to-hack-the-java-9-module-system/
并且预计大多数 IDE 也不支持您。目前。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)