环境:
我有一个支持多个设置/可选依赖项的库项目。
该库始终需要Spring Boot+grpc java。
然而,lib的用户可以决定是否要使用netty或netty着色。
最后,如果存在Spring安全性和/或Spring云,该库将添加其他功能。
我有一组使用默认设置(netty+Spring Security)运行的测试。
如何测试我是否可以将库中的所有功能与其他设置组合一起使用,而无需多次复制测试?
(在上次更新期间,我在一个库类中使用了错误库中的一个类,因此,如果缺少可选依赖项,库将无法正常工作。现在我想防止将来出现类似问题)
可能的解决方案
-
创建一个包含测试代码的测试库项目,并创建多个从该库执行测试的测试项目。
并非所有测试都适用于所有设置。(如果没有安全lib,安全测试显然会失败)。
不幸的是,测试项目的数量很容易激增。目前大约需要8个项目来测试所有可能的组合。如果我添加另一个可选依赖项(我考虑这样做),这将增加到16。
如果没有更简单的方法,我可能会用这个。
-
将依赖项复制到特定文件夹,并使用一些代码将它们动态添加到类加载器中。
这需要额外的编码和一些糟糕的类加载器魔法,还可能需要一种分叉测试执行模式,这种模式不能并行执行测试(因为它们可能必须绑定端口)
TLDR:
有没有一种简单的方法可以使用gradle使用不同的依赖集运行JUnit 5测试?