junit无法在打包为jar的SpringBoot应用程序中以编程方式发现测试

jchrr9hc  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(215)

我有一个现有的应用程序,我已经 Package 在一个spring启动应用程序中,为它提供restapi。应用程序在其核心使用junit来运行一些测试(我知道这不是常规的)。
自从引入spring boot后,应用程序就再也找不到了 jupiter-engine 还有我的测试方法。
有趣的是,从ide(intellij)运行应用程序很好。但作为一个独立的jar( java -jar ),它没有。
我在 Package 好的jar里看了看,所有的东西都存放在盒子里 BOOT-INF 目录。没有spring,目录结构就更平坦,没有 BOOT-INF 目录(显然)。
我的测试用例存储在包中 scenarios . 我的申请表在 com.foo.bar.app . 请注意,我的测试用例位于 main Package 中没有 test 包裹。
(同样,我知道这是非常规的,但它们不是常规的单元测试。)
我以前经常用

LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder
                .request()
                .selectors(DiscoverySelectors.selectPackage("scenarios"))
                .build();

然而,对于spring,我只能发现它们如下。

LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder
                .request()
                .selectors(DiscoverySelectors.selectPackage(""))
                .build();

然而,发射装置无法发射导弹 TestPlan 因为它找不到引擎。我有种感觉 JUnit 正在查找硬编码路径,该路径位于 BOOT-INF 目录。
我做了一些额外的测试,我发现

DiscoverySelectors.selectMethod(className + "#" + method)

失败于
无法加载名为的类: scenarios.path.to.class 测试类与应用程序打包在一起,但它位于 BOOT-INF 目录。
是否缺少一些配置?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题