代码之家  ›  专栏  ›  技术社区  ›  ST-DDT

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

  •  1
  • ST-DDT  · 技术社区  · 6 年前

    环境:

    • Java 8
    • 格拉德尔4
    • JUnit 5

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

    该库始终需要Spring Boot+grpc java。 然而,lib的用户可以决定是否要使用netty或netty着色。 最后,如果存在Spring安全性和/或Spring云,该库将添加其他功能。

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

    (在上次更新期间,我在一个库类中使用了错误库中的一个类,因此,如果缺少可选依赖项,库将无法正常工作。现在我想防止将来出现类似问题)

    可能的解决方案

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

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

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

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

    TLDR: 有没有一种简单的方法可以使用gradle使用不同的依赖集运行JUnit 5测试?

    0 回复  |  直到 6 年前