2017-04-08 67 views
2

我想休息我休息班Spring MVC中春季启动 - 测试用例 - 不要加载所有组件

如果我运行下面的代码(运行良好时,该项目是小,但现在失败),它会尝试加载我的应用程序中的所有不同组件。 这包括与外部系统进行交互,需要为了凭据连接

@RunWith(SpringRunner.class) 
@SpringBootTest 
@AutoConfigureMockMvc 
public class TestDummyRest extends BaseRestTestCase{ 

    @Autowired 
    private MockMvc mockMvc; 

    @MockBean 
    private IDummyServices mockDummyServices; 


    @Test 
    public void getSendGoodMessage() throws Exception { 

     given(mockDummyServices.sendGoodMessage(Mockito.anyString())).willReturn(true); 

     mockMvc.perform(get("/dummy")) 
        .andExpect(status().isOk()) 
        .andExpect(content().contentType(TEXT_PLAIN_CONTENT_TYPE)); 

     verify(mockDummyServices, times(1)).sendGoodMessage(Mockito.anyString()); 
    } 
} 

我怎么告诉我的测试类不加载我的应用程序的@Configuration或@Component类豆?

感谢 达明

回答

1

而是在应用程序中没有创建其他类的,你只能创建类你感兴趣见15.6.1 Server-Side Tests - Setup Options

第二是简单地手动创建的控制器实例,而不 加载弹簧CONF iguration。相反,基本默认配置, 大致相当于该MVC JavaConfig或MVC命名空间, 自动创建并可以定制到一定程度:

public class MyWebTests { 

    private MockMvc mockMvc; 

    @Before 
    public void setup() { 
     this.mockMvc = MockMvcBuilders.standaloneSetup(new AccountController()).build(); 
    } 

    // ... 

} 
+0

非常感谢@ninj - 这真是一种享受,真的加快了我的测试用例的执行速度 –

1

您需要使用这个春天文档的解释@TestComponent@TestConfigurationhere

+1

尝试那些没有快乐 - 文档建议其阻止应用程序加载测试配置。如果您的应用程序使用组件扫描,例如,如果您使用@SpringBootApplication或@ ComponentScan,则可能会发现仅针对特定测试创建的组件或配置意外地在任何地方都被拾取。 为了防止出现这种情况,Spring Boot提供了@ TestComponent和@ TestConfiguration批注,可以在src/test/java的类中使用它们来指示它们不应该被扫描拾取。 –