当前位置: 首页 > 知识库问答 >
问题:

如何将带有@SpringBootApplication的maven模块作为测试范围内的依赖项添加到另一个maven模块

程瑞
2023-03-14

我有一个多模块项目,其中只有根模块有一个带有@SpringBootApplication的类。其他模块作为依赖项添加到根模块的POM文件中。为了测试其他模块,我使用@SpringBootApplication注释类和其他测试类创建了一个模块(让我们称之为test-mod)来运行模块测试中的Spring上下文。我将test-modas作为依赖项添加到其他模块,但当我使用maven运行测试时Spring上下文不会运行。如何正确添加?

项目结构:

---> root (this module starts spring context)
|
|--- moduleA
|
|--- moduleB

我想测试moduleA和moduleB,所以我创建了一个带有所需依赖项和带有@SpringBootApplication注释的类的测试模块

|--- test-module (module with @SpringBootApplication)
|
|---> moduleA (test-module as dependency in test scope)
|
|---> moduleB (test-module as dependency in test scope)

共有1个答案

锺离慈
2023-03-14

如果您的模块没有@SpringBootApplication,那么您应该在junit测试代码中使用@ContextConfiguration而不是@SpringBootTest。

首先,在/src/test下定义一个类,可能称为“TestConfig”,使用@Configuration和@ComponentScan导入要测试的bean。

其次,在junit测试的头中使用@ContextConfiguration(类={TestConfig.class})。

下面是示例代码:

TestConfig.java

@Configuration
@ComponentScan(basePackages = {"com.xxx"}) // base package of module or what package you want to import. you can write more ones if there are more than one package.
public class TestConfig {
}

JUnit测试

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {TestConfig.class})
public class TestServiceA {

    @Autowired
    public ServiceA serviceA;

//...
}
 类似资料:
  • 我目前在一个项目中工作,该项目包括大约12个子项目。 每个子项目都包含一个POM,该POM单独构建依赖关系。 上游子项目包括下游子项目作为依赖项,其方式与包含对log4j: 这似乎对我们管用。 然而,今天,经过11个月的开发,我决定重温这十几个POM文件,并考虑到重构。 我随后发现了和标记,并开始怀疑我的Maven项目策略是否“正确”。 重构我的POM,使最上层的POM(一个Web WAR项目)变

  • 我有一个多模块maven项目,包含三个模块、和 Core具有以下依赖项定义 我已经为所有三个模块添加了Java9定义,的如下所示: 但是,我不知道如何让的测试类能够在测试执行期间看到类。当尝试测试运行时,找不到类。 如果向的添加需要My.Project.TestUtils;的: 然后在编译时,我得到一个错误,即找不到模块(大概是因为它只是作为测试依赖项引入的)。 在Java9模块化的世界中,如何处

  • 而不是常规的选项。 该模块有一个文件和自己的文件

  • 问题内容: 我试图弄清楚Maven多模块项目中的所有依赖项。首先,我使用appfuse创建了一个新的spring mvc多模块项目。它最初具有Web和核心模块。 我发现了部署此项目的知识。但是当我遇到错误时。我总是在哪里添加依赖项或插件感到困惑。我想澄清以下问题。 我创建了一个appfuse mvc多模块项目。我先安装了核心,然后在网上进行了maven jetty7:run(最初我在根文件夹上运行

  • 我想知道为什么我的简单spring boot项目不再有效。它基本上直接来自spring示例,其中一个控制器说hello world。我使用的是spring boot starter jetty和spring boot v1.1.10(也尝试了1.2.0)。我有一些使用嵌入式solr的单元测试,所以solr核心被标记为<代码> 我认为测试范围的依赖关系不应该干扰编译范围的依赖关系,并且“仅适用于测试

  • 在使用scalatest时,我遇到了一个奇怪的问题。我有一个带有多个模块的maven项目。如果我直接在模块中执行mvn测试。它可以正常工作,但如果在根文件夹中执行,它会抱怨编译时缺少包(依赖项)。 我的配置如下所示: 插件配置: 如果我从maven scala插件中删除目标,它将编译,但scalatest将找不到测试源并退出,并且没有执行任何测试 : 你知道我做错了什么吗?! 干杯