对具有不同依赖关系集的库项目运行测试

时间:2018-11-23 15:20:01

标签: java spring gradle junit dependencies

环境:

  • Java 8
  • 4年级
  • JUnit 5

我有一个支持多个设置/可选依赖项的库项目。

该库始终需要Spring Boot + grpc-java。 但是,lib的用户可以决定要使用netty还是netty着色的。 最后,如果存在Spring-Security和/或Spring-Cloud,则lib将添加其他功能。

我有一组使用默认设置(netty + Spring-Security)运行的测试。 如何测试我是否还可以将库中的所有功能与其他设置组合一起使用,而无需多次复制测试?

(在上一次更新期间,我在一个库类中使用了来自错误库的类,因此如果缺少可选依赖项,则库将无法正常工作。现在,我希望将来避免出现类似问题)< / p>

可能的解决方案

  • 创建一个包含测试代码的测试库项目,并创建多个从该库执行测试的测试项目。

并非所有测试都适用于所有设置。 (如果不存在安全库,则安全测试显然会失败)。 不幸的是,测试项目的数量很容易爆炸。目前,需要约8个项目来测试所有可能的组合。如果我添加另一个可选的依赖项(我认为是这样做的),它将增加到16。 如果没有更简单的方法,我可能会使用这种方法。

  • 将依赖项复制到特定文件夹,并使用一些代码将其动态添加到类加载器中。

这需要额外的编码和一些不好的类加载器魔术,还可能需要分叉的测试执行模式,该模式不能并行执行测试(因为它们可能必须绑定端口)

TLDR:是否有一种简便的方法来使用gradle运行具有不同依赖关系集的JUnit 5测试?

0 个答案:

没有答案