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

f1tvaqid  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(376)

我有一个多模块项目,其中只有根模块有一个带有@springbootapplication的类。其他模块作为依赖项添加到根模块的pom文件中。为了测试其他模块,我创建了一个带有@springbootapplication注解类和其他测试类的模块(我们称之为测试模块),以在模块测试中运行spring上下文。我添加了测试模块作为对其他模块的依赖,但是当我使用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)
cpjpxq1n

cpjpxq1n1#

如果您的模块没有@springbootapplication,您应该在junit测试代码中使用@contextconfiguration而不是@springboottest。
首先,在/src/test下定义一个类,可能称为“testconfig”,使用@configuration和@componentscan导入要测试的bean。
其次,在junit测试的头中使用@contextconfiguration(classes={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;

//...
}

相关问题