You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Micronaut测试中如何用@Factory自定义ApplicationContext替代Spring@ContextConfiguration

在Micronaut测试中直接使用@Factory类初始化上下文

方法1:用@MicronautTest直接指定Factory类

Micronaut的@MicronautTest注解支持直接传入你的@Factory类,不用手动构建ContextBuilder。示例代码如下:

import io.micronaut.test.extensions.junit5.annotation.MicronautTest;
import org.junit.jupiter.api.Test;

// 直接指定你的@Factory类
@MicronautTest(classes = TestConfig.class)
public class YourTestClass {

    // 直接注入TestConfig里定义的Bean
    private final YourBean yourBean;

    // 构造函数注入(Micronaut推荐方式)
    public YourTestClass(YourBean yourBean) {
        this.yourBean = yourBean;
    }

    @Test
    void testBeanInjection() {
        // 测试逻辑
        assert yourBean != null;
    }
}

方法2:通过packages属性指定Factory所在包

如果之前指定包没成功,大概率是包路径配置有误。确保packages属性指向TestConfig所在的精确包名:

@MicronautTest(packages = "com.yourpackage.config")
public class YourTestClass {
    // 测试内容
}

注意:包名要精确到包含TestConfig的最上层包,Micronaut会自动扫描该包及其子包下所有@Factory、@Singleton等Bean定义。

排查包扫描失败的常见原因

  • 确认TestConfig类是public的,且正确标记了@Factory注解
  • 检查测试模块是否正确依赖了包含TestConfig的库模块,确保类路径能加载到该类
  • 如果是JPMS模块化项目,需要在module-info.java中导出TestConfig所在的包,允许Micronaut扫描

内容的提问来源于stack exchange,提问作者user3696568

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 09:15:48