成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring、Spring Boot和TestNG測試指南 - 使用Spring Testing工具

Maxiye / 386人閱讀

摘要:源代碼見需要注意的是,如果是專供某個測試類使用的話,把它放到外部并不是一個好主意,因為它有可能會被掃描到,從而產(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

相關(guān)文章

  • Spring、Spring BootTestNG測試指南 - 使用Spring Boot Test

    摘要:地址前面一個部分講解了如何使用工具來測試項目,現(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工具來測...

    Anshiii 評論0 收藏0
  • Spring、Spring BootTestNG測試指南 - @TestPropertySourc

    摘要:地址可以用來覆蓋掉來自于系統(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...

    paney129 評論0 收藏0
  • SpringSpring BootTestNG測試指南 - 測試AOP

    摘要:首先先來看我們事先定義的以及??梢钥吹綍薷姆椒ǖ姆祷刂?,使其返回。例子測試的行為最簡單的測試方法就是直接調(diào)用,看看它是否使用返回。先看這段代碼這些是利用提供的和來判斷是否被代理了的實現(xiàn)是通過動態(tài)代理來做的。 Github地址 Spring提供了一套AOP工具,但是當(dāng)你把各種Aspect寫完之后,如何確定這些Aspect都正確的應(yīng)用到目標(biāo)Bean上了呢?本章將舉例說明如何對Spring...

    changfeng1050 評論0 收藏0
  • Spring、Spring BootTestNG測試指南 - @OverrideAutoConfi

    摘要:因為只有這樣才能夠在測試環(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)...

    elisa.yang 評論0 收藏0
  • SpringSpring BootTestNG測試指南 - 測試關(guān)系型數(shù)據(jù)庫

    摘要:地址提供了對的支持,能夠讓我們很方便對關(guān)系型數(shù)據(jù)庫做集成測試。如果想要在打包的時候跳過集成測試,只需要。例子使用因為使用了來做集成測試,得益于其機(jī)制,不需要自己構(gòu)建和的。 Github地址 Spring Test Framework提供了對JDBC的支持,能夠讓我們很方便對關(guān)系型數(shù)據(jù)庫做集成測試。 同時Spring Boot提供了和Flyway的集成支持,能夠方便的管理開發(fā)過程中產(chǎn)生...

    Meils 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<