1
如何能爲SpringMock MVC測試的時區設置? 我們的春天啓動的應用程序都與時區爲Spring MVC模擬測試
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
組在應用程序啓動運行。但是我找不到爲MockMvcRequestBuilders設置的方法。手動設置它(在測試或BeforeClass)沒有任何改變=仍使用機器時區...
如何能爲SpringMock MVC測試的時區設置? 我們的春天啓動的應用程序都與時區爲Spring MVC模擬測試
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
組在應用程序啓動運行。但是我找不到爲MockMvcRequestBuilders設置的方法。手動設置它(在測試或BeforeClass)沒有任何改變=仍使用機器時區...
您可以使用@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;
}
}
你設置時區上啓動一個Spring bean之外?(如在main方法啓動前),這是什麼原因,你需要單獨處理它的測試相比,運行的應用程序的原因是什麼? – Zergleb
是的。有錯了。以爲我可以複製應用程序類用於測試目的。但是這裏的主要類別從來沒有被調用過。至少如果使用MockMVC。將TimeZone設置移動到 @Bean public ServletRegistrationBean servletRegistrationBean(){...} 那裏。現在它被稱爲... – Strinder