@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。在本例中,它将仅为 储存库及;搜索者 .
有什么建议吗?
你可以用 @ContextConfiguration @SpringBootTest @WebMvcTest 或 @DataJdbcTest .
@ContextConfiguration
@SpringBootTest
@WebMvcTest
@DataJdbcTest
然而,这种方法有两个主要缺点:
您在这个新的有限上下文中实际测试什么?肯定不是生产应用程序,因为您没有启动整个Spring上下文。这可能导致测试漏掉bug,例如,bean覆盖问题可能没有被发现。
SpringRunner 如果可能,将尝试在测试之间重用Spring上下文。当您有多个测试时,一次启动一个大上下文并在所有测试中共享它可能会更快。
SpringRunner