我有一个现有的应用程序,我已经 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
目录。
是否缺少一些配置?
暂无答案!
目前还没有任何答案,快来回答吧!