1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      現(xiàn)代軟件工程講義2開發(fā)技術(shù)-單元測試&回歸測試-創(chuàng)新互聯(lián)

      1單元測試

      為禹州等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及禹州網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站建設(shè)、禹州網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

      你的RP是由你的程序質(zhì)量決定的。

      ——阿超

      這一章講的是兩人合作,既然程序是兩個人寫的,那就會出現(xiàn)一個人寫的模塊被另一個人寫的模塊調(diào)用的情況。很多誤解、疏忽都發(fā)生在兩個模塊之間。如何能讓自己寫的模塊盡量無懈可擊?單元測試就是一個很有效的解決方案。

      1.1  用VSTS寫單元測試

      例子:我們寫一個比較常用的類型,看看它的單元測試應(yīng)該怎么寫?比如在各種網(wǎng)站應(yīng)用程序中都會用到的“用戶”這一類型。誰自告奮勇上來表演一下寫代碼?小飛,好,請上臺。

      小飛創(chuàng)建了一個C#的類庫(Class Library),并寫了如代碼清單11-1的代碼:

      代碼清單11-1

      namespace DemoUser
      {
          public class User
          {
              public User(string userEmail)
              {
                  m_email = userEmail;
              }
              private string m_email; //user email as user id
          }   
      }

      好,現(xiàn)在右鍵選中User,就可以看到“Create Unit Tests”的菜單,這樣就可以創(chuàng)建新的單元測試(如圖11-2所示)。

      現(xiàn)代軟件工程講義 2 開發(fā)技術(shù) - 單元測試 & 回歸測試

      圖11-2  創(chuàng)建單元測試項目

      創(chuàng)建單元測試后,注意到在Solution Explorer中出現(xiàn)了三個新的文件(如圖11-3所示)。

      現(xiàn)代軟件工程講義 2 開發(fā)技術(shù) - 單元測試 & 回歸測試

      圖11-3  新的單元測試文件

      Class1.cs是程序的文件,而Class1Test.cs是與之對應(yīng)的單元測試文件。

      DemoUser.vsmdi:測試管理文件。

      Localtestrun.testrunconfig:本地測試運行設(shè)置文件。

      如何管理設(shè)置文件呢?右鍵再選屬性(Property)并不對。你得雙擊文件才能進入管理及設(shè)置界面。在設(shè)置界面中,你可以讓單元測試產(chǎn)生“demouser.dll”的代碼覆蓋報告。

      注意在單元測試中,VSTS自動為你生成了測試的骨架,但是你還是要自己做不少事情,最起碼要把那些//TODO的事情給做了(如代碼清單11-2所示)。在這個時候,單元測試還都是用的Assert. Inconclusive,表明這是一個未經(jīng)驗證的單元測試。

      代碼清單11-2

      /// 
      ///A test for User (string)
      ///
      [TestMethod()]
      public void ConstructorTest()
      {
      string userEmail = null; // TODO: Initialize to an appropriate
      // value
       
      User target = new User(userEmail);
      // TODO: Implement code to verify target
      Assert.Inconclusive("TODO: Implement code to verify target");
      }

      進行簡單的修改后,我們得到了一個如代碼清單11-3正式的單元測試:

      代碼清單11-3

      [TestMethod()]
              public void ConstructorTest()
              {
                  string userEmail = "someone@somewhere.com";
       
                  User target = new User(userEmail);
       
                  Assert.IsTrue(target != null);
              }
      //我們還可以進一步測試E-mail是否的確是保存在User類型中

      解釋單元測試的結(jié)構(gòu)

      從上面這個例子可以看到創(chuàng)建單元測試函數(shù)的主要步驟:

      (1)設(shè)置數(shù)據(jù)(一個假想的正確的E-mail地址);

      (2)使用被測試類型的功能(用E-mail地址來創(chuàng)建一個User類的實體);

      (3)比較實際結(jié)果和預(yù)期的結(jié)果(Assert.IsTrue(target!= null);)。

      現(xiàn)在可以運行單元測試了,同時可以看看代碼覆蓋報告“code coverage report”,代碼百分之百地都被覆蓋了。

      當然這時候的代碼還有很多情況沒有處理,同學(xué)們在臺下雜曰——

      處理空的字符串,長度為零的字符串,都是空格的串……

      小飛熟練地用Copy/Paste又寫了下面的三個測試,如代碼清單11-4所示。

      代碼清單11-4

       [TestMethod()]
              [ExpectedException(typeof (ArgumentNullException))]
              public void ConstructorTestNull()
              {
                  User target = new User(null);
              }
       
              [TestMethod()]
              [ExpectedException(typeof(ArgumentException))]
              public void ConstructorTestEmpty()
              {
                  User target = new User("");
              }
       
              [TestMethod()]
              [ExpectedException(typeof(ArgumentNullException))]
              public void ConstructorTestBlank()
              {
                  User target = new User("     ");
              }

      如果不修改類庫中的代碼,單元測試會報告這三個新的測試都失敗了。

      小飛對代碼做了相應(yīng)的修改。結(jié)果出了這樣的錯誤,見代碼清單11-5:


      標題名稱:現(xiàn)代軟件工程講義2開發(fā)技術(shù)-單元測試&回歸測試-創(chuàng)新互聯(lián)
      本文鏈接:http://www.ef60e0e.cn/article/pgjcg.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        石首市| 庆云县| 纳雍县| 万宁市| 兴安盟| 牙克石市| 泗阳县| 玉环县| 涪陵区| 田林县| 东乡县| 东乌珠穆沁旗| 广安市| 临湘市| 喀喇沁旗| 泸溪县| 廊坊市| 牙克石市| 团风县| 吴桥县| 东乡县| 马鞍山市| 康定县| 安宁市| 武山县| 勃利县| 沅江市| 临泽县| 江孜县| 临夏县| 咸丰县| 寻乌县| 玉环县| 六盘水市| 玉林市| 屏山县| 龙岩市| 临洮县| 镇原县| 岑巩县| 迁西县|