2015-10-19 89 views
1

如何能爲SpringMock MVC測試的時區設置? 我們的春天啓動的應用程序都與時區爲Spring MVC模擬測試

TimeZone.setDefault(TimeZone.getTimeZone("UTC")); 

組在應用程序啓動運行。但是我找不到爲MockMvcRequestBuilders設置的方法。手動設置它(在測試或BeforeClass)沒有任何改變=仍使用機器時區...

+0

你設置時區上啓動一個Spring bean之外?(如在main方法啓動前),這是什麼原因,你需要單獨處理它的測試相比,運行的應用程序的原因是什麼? – Zergleb

+0

是的。有錯了。以爲我可以複製應用程序類用於測試目的。但是這裏的主要類別從來沒有被調用過。至少如果使用MockMVC。將TimeZone設置移動到 @Bean public ServletRegistrationBean servletRegistrationBean(){...} 那裏。現在它被稱爲... – Strinder

回答

1

您可以使用@Configuration類做到這一點。如果你用註釋的@SpringBootTest測試,春加載上下文之前執行睾丸,你有你默認的時區正確可配置。

我剛插入下面這個類在我的項目,我所有的@SpringBootTest註解測試的一個開始尊重UTC時區。您可以替換爲使用您想要的時區。

@Configuration 
public class TimeZoneConfig { 

    private static final Logger LOGGER = LoggerFactory.getLogger(TimeZoneConfig.class); 

    @Bean 
    public TimeZone timeZone(){ 
     TimeZone defaultTimeZone = TimeZone.getTimeZone("UTC"); 
     TimeZone.setDefault(defaultTimeZone); 
     LOGGER.info("Spring boot application running in UTC timezone :"+new Date()); 
     return defaultTimeZone; 
    } 

}