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