加载Spring Context以测试Spring应用程序时,例如像这样的东西:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes=MyTestConfig.class)
public class SpringTest {
从应用程序本身继承Spring Context并覆盖那些适用于测试的配置是不错的做法?
或者测试上下文是否应该与应用程序的上下文隔离(这意味着我将在两者中都有相同配置的副本?
答案 0 :(得分:0)
我认为最好将上下文分解为基于目的的部分,然后使用Spring Profiles。例如,您将始终拥有域内容的Root上下文。 Web上下文具有dispatcherServlet资源。然后数据库bean可以在不同的Spring Profiles中进行测试和运行。我说"跑"因为我不喜欢像dev / qa / prod那样使用单独的弹簧配置文件,就像有些人推荐的那样。通过JNDI而不是代码来控制它似乎更容易。
我对Mockito并没有做太多的事情,但我的有限经验似乎表明它与这种设计相当吻合。
示例JUNIT
@ActiveProfiles({"root","H2Test"})
@Transactional
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {H2ContextConfig.class,
RootContextConfig.class}, loader =
AnnotationConfigContextLoader.class)
public class TestDefectRepository {
...
使用H2的DataSource,EntityManager等:
@Configuration
@Profile("H2Test")
public class H2ContextConfig {