gpt4 book ai didi

spring-boot - 多模块spring boot项目中的单元测试

转载 作者:行者123 更新时间:2023-12-04 02:44:31 32 4
gpt4 key购买 nike

我有一个结构类似的多模块项目,如下所示:

  • 服务器(包括应用程序上下文配置)和其他配置
  • 共享(其他模块使用的实用程序类)
  • 服务(具有各种存储库和服务的模块)
  • 交易(处理交易的模块)我需要为项目编写测试,但我无法更改项目结构。我在我的交易模块中创建了一个测试。

首先我得到了

Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

我通过像这样在测试文件夹中创建一个@Configuration 文件来解决它

@Configuration
@ComponentScan("com.mohen")
public class TestConfig {
}

然后我在 @SpringBootTest(TestConfig.class) 中使用它。我能够 Autowiring ,IDE 没有显示任何错误迹象。但是当我运行我的测试时,我从另一个试图从服务模块 Autowiring 依赖项的类中得到 NoSuchBeanDefinitionException。

如何解决这些问题?

应用程序的主要配置文件看起来像

@SpringBootApplication(scanBasePackages = "com.mohen")
@EnableScheduling
@EnableAsync
@Import(value = {SSIpFilter.class, MainConfig.class})
public class Application extends SpringBootServletInitializer {...}

MainConfig.class 包含 componentScan 和 Import 注释。

如果我尝试在我的测试中导入 MainConfig.class,我会得到一个向服务器模块添加依赖项的建议,我不想这样做。

此外,整个应用程序使用单个属性文件 (yml)。我应该在哪里保存我的属性文件以供测试?

编辑

我设法运行了测试、dataJpaTest 和集成测试,但它加载了整个应用程序上下文。

现在的问题是,正常通过的测试在我构建项目时失败了 ./gradlew clean build

我明白了

java.lang.NoClassDefFoundError

在某些类和

Caused by: javassist.NotFoundException

其他。

我已经尝试添加 javaassist 库,但它不起作用。

有什么想法吗?

最佳答案

我找到了我的问题的解决方案。由于项目是多模块的,类和包没有被其他模块识别。我对模块的 build.gradle 文件进行了一些更改。

testRuntime project(':shared')

我在dependencies中添加了上面的,也添加了

jar {
enabled = true
}
bootRepackage{
enabled = false
}

jar 创建一个简单的非可执行 jar 文件,而 bootRepackage 禁止创建可执行 jar,这在默认情况下是其性质。

关于spring-boot - 多模块spring boot项目中的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60948458/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com