UnitTests和Spring - 创建新的bean?

时间:2016-05-23 12:41:10

标签: java spring unit-testing junit

我有一个应用程序,我使用Spring(注释,而不是xml),我需要在单元测试中加载bean。我有我想要使用的代码中的AppConfig类,但是有一个不同的数据源(我在test文件夹中定义了一个)。这是因为我想在我的测试中使用内存数据库,而不是真正的数据库。

以下是我尝试运行AppConfig类的方法:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {App.class, AppConfig.class})
public class DAOManagerTest {
   //All code goes here

  @AutoWired
  UserDAO userDAO; 

  @Test
  public void testGet() {
    List<User> test = userDAO.selectAll();
    for (User u: test) {
        u.toString();
    }
  }
}

这并不完全有效,因为它无法在UserDAO类中创建bean。我想我需要一些关于如何在单元测试中处理弹簧的教程/指南。我应该在我的测试文件夹中定义新bean,还是可以从我的代码中使用spring类?此外,是否可以为测试定义单独的数据源?

1 个答案:

答案 0 :(得分:1)

是。例如,如果您在DAOManagerTest中定义了一些bean,必要时使用@Primary,并将DAOManagerTest.class添加到@ContextConfiguration

还有很多其他方式来安排它,比如使用个人资料或模拟等等。