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

将测试bean注入主方法

丁曦
2023-03-14

我正在使用JavaConfig来管理Spring bean并将其连接到我的Java应用程序中。Java 应用程序是一个主要方法 - 基本上作为批处理作业运行,通过 bash 文件调用。有没有办法在我的主方法中使用不同的(测试)配置?

public static void main(String[] args) {
final ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.class);
// do Stuff
}

我之前在我的测试类中成功地使用了以下注释:@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { TestConfig.class })

,但这不适用于“主要”应用程序。除了在Spring上下文中传递作为参数之外,我不确定我可以在这里做什么。谢谢

共有1个答案

汪丁雷
2023-03-14

您也应该能够在实际的配置类中使用配置文件来做您想要的事情。通过设置所需的配置文件,您可以“注入”您想要的不同bean。

您的应用程序配置可能如下所示:

@Configuration
@Import({
    JndiDataConfig.class,
    TestDataConfig.class,
)
public class ApplicationConfig {
   ...

其中TestDataConfig看起来(部分)像:

@Configuration
@Profile("test")
public class TestDataConfig {

    @Bean
    public DataSource dataSource() {
        return new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.HSQL)
        .addScript("classpath:com/bank/config/sql/schema.sql")
        .addScript("classpath:com/bank/config/sql/test-data.sql")
        .build();
    }

}

其中JndiDataConfig看起来像:

@Configuration
@Profile("production")
public class JndiDataConfig {

    @Bean
    public DataSource dataSource() throws Exception {
        Context ctx = new InitialContext();
        return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");
    }

}
 类似资料:
  • 我对SpringBeans的正确配置有问题。我的整个应用程序在Spring上运行正常,我想添加jUnit测试。不幸的是,豆子注射不当。我在同一个模块中有两个目录。我的整个应用程序都在里面: /src/main/java/main/ 这是正确的,我添加了restest。java和Beantest配置。java内部: /src/test/java/main/ 和配置BeanTestConfigurat

  • 我正在使用以下依赖项: 创建了新的测试类: 我在Spring Boot中创建了测试用例,但是我得到了这个错误: 这是我的应用程序类: 知道我为什么不能在测试类中注入bean吗? 我按照建议删除了@ContextConfiguration,@ComponentScan,@ConnecationTes现在我看到了不同的异常:

  • 我有一个JSF的问题,CDI项目。我做了大量研究,发现在CDI中没有注释。我用对话框解决基于ajax的页面的问题。我想将变量从DataTable传递到dialog。为此,我不能使用bean,因为在请求结束后会丢弃值。有人能帮我解决吗?我不能使用,但这是一个糟糕的做法。或者只保存这一个变量到会话谁知道。你们能给我一些提示如何优雅地解决这个问题吗? 以下是错误消息:

  • 问题内容: 我使用SpringBeanAutowiringSupport在某些对象中进行bean注入。问题是,在jUnit测试中无法注入bean。为了进行测试,使用了SpringJUnit4ClassRunner。 有谁知道,为什么使用注入在jUnit测试中不起作用? 问题答案: 感谢M. Denium的帮助,他的解决方案得以奏效。

  • 问题内容: 是否可以将Spring bean注入RestEasy @Path类中?我设法通过Jersey并使用@InjectParam注释完成了此操作,但是由于某些其他原因,我需要切换到RestEasy,而且我似乎找不到解决方法(尝试了javax.inject.Inject,但没有)。 编辑 此解决方案有效:http : //www.mkyong.com/webservices/jax-rs/re

  • 我正在开发一个遗留的JSF应用程序,我们正在慢慢地将其移植到Spring MVC。我们正在使用Spring Security来控制登录信息。在用户登录之后,JSF页面全局地实例化一个在任何地方都使用的会话作用域bean。我想更改应用程序,这样我们就可以先进入用Spring MVC开发的页面。 我尝试的一种方法是将bean转换为spring bean,并将其注入JSF,但不幸的是,这需要对bean进