2017-04-08 69 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的類中使用它們來指示它們不應該被掃描拾取。 –