代码之家  ›  专栏  ›  技术社区  ›  user1028741

SprintBootTest-仅创建必要的bean

  •  0
  • user1028741  · 技术社区  · 7 年前

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class ModelRunnerTest {
    
        @Autowired
        private SomeRepository repository;
    
        @Autowired
        private SomeSearcher someSearcher;
    
    
        @Test
        public void test(){
            someSearcher.search(repository);
        }
    }
    

    它可以工作——但也可以在与2个已创建bean相同的上下文中创建所有bean。

    因此,我想找到一种方法,让测试只加载测试所需的bean。在本例中,它将仅为 储存库及;搜索者 .

    有什么建议吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Karol Dowbecki    7 年前

    你可以用 @ContextConfiguration @SpringBootTest @WebMvcTest 或 @DataJdbcTest .

    然而,这种方法有两个主要缺点:

    1. 您在这个新的有限上下文中实际测试什么?肯定不是生产应用程序,因为您没有启动整个Spring上下文。这可能导致测试漏掉bug,例如,bean覆盖问题可能没有被发现。

    2. SpringRunner 如果可能,将尝试在测试之间重用Spring上下文。当您有多个测试时,一次启动一个大上下文并在所有测试中共享它可能会更快。

    推荐文章