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

Spring Boot测试未从同级包中找到bean

许俊晤
2023-03-14
package org.myproject.server;

// ...

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class ServerITest {

    private @Autowired TestHelperBean helper;

    // ...
}

如果TestHelperBean定义在与测试类相同的包中(或在子包中),那么这就很好。

package org.myproject.server;

import org.springframework.stereotype.Component;

@Component
public class TestHelperBean {
    // ...
}

如果将其移到同级包中,则找不到该组件:

org.springframework.beans.factory.NosuchBeanDefinitionException:没有“org.myproject.testutils.testHelperBean”类型的合格bean可用:应至少有一个合格的自动候选bean。依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@ComponentScan("org.myproject")
public class ServerITest {
    // ...
}

有没有办法在Spring Boot测试中使用来自兄弟包的bean?

共有1个答案

元昊苍
2023-03-14

@componentscan注释如果放在测试类上就不起作用。

可以这样做:

  • 向测试中添加嵌套类,并使用@configuration@componentscan批注对该类进行批注。
  • 在测试类上使用@import批注。请注意,@import只允许将单个类添加到上下文中。
  • 如果不介意在其他情况下添加同级包中的类,还可以将@componentscan批注放置在上下文中已包含的任何@configuration类(或@component@service等)上。
 类似资料:
  • 我在这里给我的课做了注解 此外,还对我的测试方法进行了这样的注解 最后,配置我的build.gradle defaultConfig和依赖项,如下所示

  • 我已经看了所有其他对此的反应,但它们似乎不适用于我。 https://kotlinlang.org/api/latest/kotlin.test/kotlin.test/ 我正在尝试从暂存文件或.kt文件访问它,并且它不在下拉列表中以选择它。 项目正在使用JDK 15。

  • 我正在用开发一个API,我目前正在尝试用实现一些单元测试。当我通过命令行运行测试时,我一直遇到一个错误: 我的composer.json是这样的: 我的测试类是这样的: 如果我注释掉整个第二个测试,留下use语句,第一个测试将毫无问题地通过。我认为这可能与测试文件的位置有关,因此我将其移动到classes/app目录,在那里我有其他具有类似导入的类,并且我看到了相同的结果,因此我认为这与文件所在的

  • 问题内容: 我正在从事Web驱动程序项目。我能够构建测试并执行。 重建解决方案时,我立即遇到以下错误。 我已将默认处理器体系结构更改为,但问题未解决。 请帮助我解决此问题。 谢谢。 问题答案: 似乎是这样的问题:Visual StudioFsUnit测试设置-异常NUnit.Engine.NUnitEngineException因此,安装适配器版本3.0.10应该可以解决您的问题。至少对我有用。

  • 我在尝试执行此代码时遇到以下错误。 java.lang.IllegalArgumentException:在“com.app.aggregatorappaconfiguration”上找不到ConfigurationProperties注释。在org.springframework.util.assert.NotNull(assert.java:115)~[spring-core-4.3.2.re