歡迎訪問昆山寶鼎軟件有限公司網站! 設為首頁 | 網站地圖 | XML | RSS訂閱 | 寶鼎郵箱 | 后臺管理
?

新聞資訊

MENU

軟件開發知識

一個是給 昆山軟件定制開發 計數器+1

點擊: 次  來源:勞務派遣管理系統 時間:2017-12-07

原文出處: chanjarster

引言

本項目所有的項目均回收Maven的尺度目次布局:

  • src/main/java,措施java文件目次
  • src/main/resource,措施資源文件目次
  • src/test/java,測試代碼目次
  • src/test/resources,測試資源文件目次
  • 而且所有Maven項目都可以利用mvn clean test方法跑單位測試,出格需要留意,只有文件名是*Test.java才會被執行,必然要留意這一點哦。

    認識TestNG

    先認識一下TestNG,這里有一個FooServiceImpl,內里有兩個要領,一個是給計數器+1,一個是獲取當前計數器的值:

    @Component
    public class FooServiceImpl implements FooService {
    
      private int count = 0;
    
      @Override
      public void plusCount() {
        this.count++;
      }
    
      @Override
      public int getCount() {
        return count;
      }
    
    }

    然后我們針對它有一個FooServiceImplTest作為UT:

    public class FooServiceImplTest {
    
      @Test
      public void testPlusCount() {
        FooService foo = new FooServiceImpl();
        assertEquals(foo.getCount(), 0);
    
        foo.plusCount();
        assertEquals(foo.getCount(), 1);
      }
    
    }

    留意看代碼里的assertEquals(…),我們操作它來判定Foo.getCount要領是否憑據預期執行。所以,所謂的測試其實就是給定輸入、執行一些要領,昆山軟件開發,assert功效是否切合預期的進程。

    利用Spring Testing東西

    既然我們此刻開拓的是一個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);
      }
    
    }

    在上面的源代碼里我們要留意三點:

    1. 測試類擔任了AbstractTestNGSpringContextTests,假如不這么做測試類是無法啟動Spring容器的
    2. 利用了[@ContextConfiguration][javadoc-ContextConfiguration]來加載被測試的Bean:FooServiceImpl
    3. 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 Boot Testing東西

    前面一個部門講授了如何利用Spring Testing東西來測試Spring項目,此刻我們講授如何利用Spring Boot Testing東西來測試Spring Boot項目。

    在Spring Boot項目里既可以利用Spring Boot Testing東西,也可以利用Spring Testing東西。 在Spring項目里,一般利用Spring Testing東西,固然理論上也可以利用Spring Boot Testing,不外因為Spring Boot Testing東西會引入Spring Boot的一些特性好比AutoConfiguration,這大概會給你的測試帶來一些奇怪的問題,所以一般不推薦這樣做。

    例子1:直接加載Bean

    利用Spring Boot Testing東西只需要將@ContextConfiguration改成@SpringBootTest即可,源代碼見FooServiceImpltest:

    @SpringBootTest(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);
      }
    
    }

    例子2:利用內嵌@Configuration加載Bean

    排列三305组选前后关系 方大炭素股票走势 辽宁省十一选五 精准一头一尾中特平 极速赛车最 在线配资平台寻天牛宝 今日甘肃十一选推荐号 秒速时时彩中奖规则 百家乐玩法 三局麻将玩法 免费炒股软件排行榜