摘要:源代碼見需要注意的是,如果是專供某個測試類使用的話,把它放到外部并不是一個好主意,因為它有可能會被掃描到,從而產(chǎn)生一些奇怪的問題。
Github地址
既然我們現(xiàn)在開發(fā)的是一個Spring項目,那么肯定會用到Spring Framework的各種特性,這些特性實在是太好用了,它能夠大大提高我們的開發(fā)效率。那么自然而然,你會想在測試代碼里也能夠利用Spring Framework提供的特性,來提高測試代碼的開發(fā)效率。這部分我們會講如何使用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放在測試類里,根據(jù)@ContextConfiguration的文檔,它會在默認(rèn)情況下查找測試類的nested static @Configuration class,用它來導(dǎo)入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掃描到,從而產(chǎn)生一些奇怪的問題。
參考文檔Spring Framework Testing
Context configuration with annotated classes
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67427.html
摘要:地址前面一個部分講解了如何使用工具來測試項目,現(xiàn)在我們講解如何使用工具來測試項目。所以我們可以利用這個特性來進(jìn)一步簡化測試代碼。因為只有這樣才能夠在測試環(huán)境下發(fā)現(xiàn)生產(chǎn)環(huán)境的問題,也避免出現(xiàn)一些因為配置不同導(dǎo)致的奇怪問題。 Github地址 前面一個部分講解了如何使用Spring Testing工具來測試Spring項目,現(xiàn)在我們講解如何使用Spring Boot Testing工具來測...
摘要:地址可以用來覆蓋掉來自于系統(tǒng)環(huán)境變量系統(tǒng)屬性的屬性。同時優(yōu)先級高于。利用它我們可以很方便的在測試代碼里微調(diào)模擬配置比如修改操作系統(tǒng)目錄分隔符數(shù)據(jù)源等。源代碼例子使用工具也可以和一起使用。源代碼見參考文檔 Github地址 @TestPropertySource可以用來覆蓋掉來自于系統(tǒng)環(huán)境變量、Java系統(tǒng)屬性、@PropertySource的屬性。 同時@TestPropertySou...
摘要:首先先來看我們事先定義的以及??梢钥吹綍薷姆椒ǖ姆祷刂?,使其返回。例子測試的行為最簡單的測試方法就是直接調(diào)用,看看它是否使用返回。先看這段代碼這些是利用提供的和來判斷是否被代理了的實現(xiàn)是通過動態(tài)代理來做的。 Github地址 Spring提供了一套AOP工具,但是當(dāng)你把各種Aspect寫完之后,如何確定這些Aspect都正確的應(yīng)用到目標(biāo)Bean上了呢?本章將舉例說明如何對Spring...
摘要:因為只有這樣才能夠在測試環(huán)境下發(fā)現(xiàn)生產(chǎn)環(huán)境的問題,也避免出現(xiàn)一些因為配置不同導(dǎo)致的奇怪問題。而方法則能夠不改變原有配置不提供新的配置的情況下,就能夠關(guān)閉。 Github地址 在Chapter 1: 基本用法 - 使用Spring Boot Testing工具里提到: 除了單元測試(不需要初始化ApplicationContext的測試)外,盡量將測試配置和生產(chǎn)配置保持一致。比如如果生產(chǎn)...
摘要:地址提供了對的支持,能夠讓我們很方便對關(guān)系型數(shù)據(jù)庫做集成測試。如果想要在打包的時候跳過集成測試,只需要。例子使用因為使用了來做集成測試,得益于其機(jī)制,不需要自己構(gòu)建和的。 Github地址 Spring Test Framework提供了對JDBC的支持,能夠讓我們很方便對關(guān)系型數(shù)據(jù)庫做集成測試。 同時Spring Boot提供了和Flyway的集成支持,能夠方便的管理開發(fā)過程中產(chǎn)生...
閱讀 2515·2021-11-15 11:38
閱讀 1964·2021-11-05 09:37
閱讀 2289·2021-10-08 10:12
閱讀 2821·2019-08-30 15:55
閱讀 2123·2019-08-30 15:52
閱讀 1231·2019-08-29 13:24
閱讀 472·2019-08-26 18:27
閱讀 1485·2019-08-26 18:27