摘要:源代碼見需要注意的是,如果是專供某個測試類使用的話,把它放到外部并不是一個好主意,因為它有可能會被掃描到,從而產生一些奇怪的問題。
Github地址
既然我們現在開發的是一個Spring項目,那么肯定會用到Spring Framework的各種特性,這些特性實在是太好用了,它能夠大大提高我們的開發效率。那么自然而然,你會想在測試代碼里也能夠利用Spring Framework提供的特性,來提高測試代碼的開發效率。這部分我們會講如何使用Spring提供的測試工具來做測試。
例子1源代碼見FooServiceImplTest:
@ContextConfiguration(classes = FooServiceImpl.class) public class FooServiceImplTest extends AbstractTestNGSpringContextTests { @Autowired private FooService foo; @Test public void testPlusCount() throws Exception { assertEquals(foo.getCount(), 0); foo.plusCount(); assertEquals(foo.getCount(), 1); } }
在上面的源代碼里我們要注意三點:
測試類繼承了AbstractTestNGSpringContextTests,如果不這么做測試類是無法啟動Spring容器的
使用了@ContextConfiguration來加載被測試的Bean:FooServiceImpl
FooServiceImpl是@Component
以上三點缺一不可。
例子2在這個例子里,我們將@Configuration作為nested static class放在測試類里,根據@ContextConfiguration的文檔,它會在默認情況下查找測試類的nested static @Configuration class,用它來導入Bean。
源代碼見FooServiceImplTest:
@ContextConfiguration public class FooServiceImplTest extends AbstractTestNGSpringContextTests { @Autowired private FooService foo; @Test public void testPlusCount() throws Exception { assertEquals(foo.getCount(), 0); foo.plusCount(); assertEquals(foo.getCount(), 1); } @Configuration @Import(FooServiceImpl.class) static class Config { } }例子3
在這個例子里,我們將@Configuration放到外部,并讓@ContextConfiguration去加載。
源代碼見Config:
@Configuration @Import(FooServiceImpl.class) public class Config { }
FooServiceImplTest:
@ContextConfiguration(classes = Config.class) public class FooServiceImplTest extends AbstractTestNGSpringContextTests { @Autowired private FooService foo; @Test public void testPlusCount() throws Exception { assertEquals(foo.getCount(), 0); foo.plusCount(); assertEquals(foo.getCount(), 1); } }
需要注意的是,如果@Configuration是專供某個測試類使用的話,把它放到外部并不是一個好主意,因為它有可能會被@ComponentScan掃描到,從而產生一些奇怪的問題。
參考文檔Spring Framework Testing
Context configuration with annotated classes
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67427.html
摘要:地址前面一個部分講解了如何使用工具來測試項目,現在我們講解如何使用工具來測試項目。所以我們可以利用這個特性來進一步簡化測試代碼。因為只有這樣才能夠在測試環境下發現生產環境的問題,也避免出現一些因為配置不同導致的奇怪問題。 Github地址 前面一個部分講解了如何使用Spring Testing工具來測試Spring項目,現在我們講解如何使用Spring Boot Testing工具來測...
摘要:地址可以用來覆蓋掉來自于系統環境變量系統屬性的屬性。同時優先級高于。利用它我們可以很方便的在測試代碼里微調模擬配置比如修改操作系統目錄分隔符數據源等。源代碼例子使用工具也可以和一起使用。源代碼見參考文檔 Github地址 @TestPropertySource可以用來覆蓋掉來自于系統環境變量、Java系統屬性、@PropertySource的屬性。 同時@TestPropertySou...
摘要:首先先來看我們事先定義的以及。可以看到會修改方法的返回值,使其返回。例子測試的行為最簡單的測試方法就是直接調用,看看它是否使用返回。先看這段代碼這些是利用提供的和來判斷是否被代理了的實現是通過動態代理來做的。 Github地址 Spring提供了一套AOP工具,但是當你把各種Aspect寫完之后,如何確定這些Aspect都正確的應用到目標Bean上了呢?本章將舉例說明如何對Spring...
摘要:因為只有這樣才能夠在測試環境下發現生產環境的問題,也避免出現一些因為配置不同導致的奇怪問題。而方法則能夠不改變原有配置不提供新的配置的情況下,就能夠關閉。 Github地址 在Chapter 1: 基本用法 - 使用Spring Boot Testing工具里提到: 除了單元測試(不需要初始化ApplicationContext的測試)外,盡量將測試配置和生產配置保持一致。比如如果生產...
摘要:地址提供了對的支持,能夠讓我們很方便對關系型數據庫做集成測試。如果想要在打包的時候跳過集成測試,只需要。例子使用因為使用了來做集成測試,得益于其機制,不需要自己構建和的。 Github地址 Spring Test Framework提供了對JDBC的支持,能夠讓我們很方便對關系型數據庫做集成測試。 同時Spring Boot提供了和Flyway的集成支持,能夠方便的管理開發過程中產生...
閱讀 2508·2021-11-15 11:38
閱讀 1956·2021-11-05 09:37
閱讀 2270·2021-10-08 10:12
閱讀 2812·2019-08-30 15:55
閱讀 2115·2019-08-30 15:52
閱讀 1228·2019-08-29 13:24
閱讀 468·2019-08-26 18:27
閱讀 1478·2019-08-26 18:27