具有声明性和注释bean的SpringJUnit4ClassRunner

时间:2013-12-20 13:49:30

标签: java spring unit-testing

我有一个声明性的spring config

@Configuration
public class SpringConfig {
   @Bean 
   public someBean() {
      return new Bean1();
   }
}

和@Component带注释的Bean

@Component
public class Bean2 {   
}

现在我想在我的UnitTest

中同时使用它们
@RunWith(SpringJUnit4ClassRunner.class)
public void UnitTest {
   @Autowired Bean1 bean1;

   @Autowired Bean2 bean2;
}

但我不知道该怎么做。

1 个答案:

答案 0 :(得分:3)

你可以这样做:

@ContextConfiguration(classes = {SpringConfig.class})
@RunWith(SpringJUnit4ClassRunner.class)
public void UnitTest {
   @Autowired Bean1 bean1;

   @Autowired Bean2 bean2;
}

对于类Bean2,您可以添加@ComponentScan注释:

@Configuration
@ComponentScan("com....package.of.bean2")
public class SpringConfig {
   @Bean 
   public someBean() {
      return new Bean1();
   }
}

如果您不想将ComponentScan添加到SpringConfig类,可以使用ComponentScan注释添加其他测试配置类,并将其添加到ContextConfiguration注释中:

@ContextConfiguration(classes = {SpringConfig.class, SpringTestConfig.class})