正文

供求信息網(wǎng)(15)

ASP.NET項目開發(fā)案例全程實錄(第2版) 作者:明日科技


1.5.3 網(wǎng)站主頁實現(xiàn)過程

本模塊使用的數(shù)據(jù)表:tb_LeaguerInfo。

1.設(shè)計步驟

(1)在網(wǎng)站的根目錄下新建一個Web窗體,默認名稱為Default.aspx,并且將其作為MasterPage.master母版頁的內(nèi)容頁,該過程已經(jīng)在1.5.2節(jié)中詳細講解,Default.aspx主要用于網(wǎng)站的主頁。

(2)在Web窗體的Content區(qū)域添加一個Table表格,用于頁面的布局。

(3)在Web窗體Content區(qū)域的Table中添加6個DataList數(shù)據(jù)服務(wù)器控件,主要用于顯示各種類型的部分供求信息。

(4)在添加的6個DataList數(shù)據(jù)服務(wù)器控件中分別添加一個Table,用于DataList控件的布局,并綁定相應(yīng)的數(shù)據(jù)。在ASPX頁中實現(xiàn)綁定代碼如下:

<ItemTemplate>

<table align="center" cellpadding="0" cellspacing="0" width="266">

<tr>

<td>

<span class="hong" style="color: #000000">·<a class="huise" href="ShowLeaguerInfo.aspx?id=<%#DataBinder.Eval(Container.DataItem,"id") %>" target="_blank"><%#DataBinder.Eval(Container.DataItem,"title") %></a></span></td>

</tr>

<tr style="color: #000000">

<td>

<img height="1" src="images/line.gif" width="266" /></td>

</tr>

</table>

</ItemTemplate>

2.實現(xiàn)代碼

在主頁Web窗體的加載事件中將各種類型的部分供求信息綁定到DataList控件。實現(xiàn)代碼如下:

例程18 代碼位置:光盤\TM\01\SIS\ Default.aspx.cs

Operation operation = new Operation(); //聲明網(wǎng)站業(yè)務(wù)類對象

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack) //!IsPostBack避免重復刷新加載頁面

{

//獲取前6條分類供求信息

dlZP.DataSource = operation.SelectLeaguerInfo(true, "招聘信息", 6);

dlZP.DataBind();

dlPX.DataSource = operation.SelectLeaguerInfo(true, "培訓信息", 6);

dlPX.DataBind();

dlGY.DataSource = operation.SelectLeaguerInfo(true, "公寓信息", 6);

dlGY.DataBind();

dlJJ.DataSource = operation.SelectLeaguerInfo(true, "家教信息", 6);

dlJJ.DataBind();

dlWPQG.DataSource = operation.SelectLeaguerInfo(true, "物品求購", 6);

dlWPQG.DataBind();

dlWPCS.DataSource = operation.SelectLeaguerInfo(true, "物品出售", 6);

dlWPCS.DataBind();

dlQDCD.DataSource = operation.SelectLeaguerInfo(true, "求兌出兌", 6);

dlQDCD.DataBind();

dlCL.DataSource = operation.SelectLeaguerInfo(true, "車輛信息", 6);

dlCL.DataBind();

}

}

代碼貼士

Page.IsPostBack屬性:獲取一個值,該值指示該頁是否正為響應(yīng)客戶端回發(fā)而加載,或者它是否正被首次加載和訪問。如果是為響應(yīng)客戶端回發(fā)而加載該頁,則為True;否則為False。

SelectLeaguerInfo()方法:自定義業(yè)務(wù)層類中方法,用于查詢同類型收費到期和未到期供求信息(前n條信息),True顯示過期信息,F(xiàn)alse顯示未過期信息。

1.5.4 單元測試

在現(xiàn)代軟件開發(fā)過程中,測試不再作為一個獨立的生命周期。單元測試成為與編寫代碼同步進行的開發(fā)活動。單元測試能夠提高程序員對程序的信心,保證程序的質(zhì)量,加快軟件開發(fā)速度,使程序易于維護。

1.單元測試概述

單元測試是要在軟件開發(fā)過程中進行的最低級別的測試活動。在單元測試活動中,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試。

在一種傳統(tǒng)的結(jié)構(gòu)化編程語言,如C語言中,要進行測試的單元一般是函數(shù)或子過程。在像C++這樣的面向?qū)ο蟮恼Z言中,要進行測試的基本單元是類。單元測試不僅僅是作為無錯編碼的一種輔助手段在一次性開發(fā)過程中使用,單元測試必須是可重復的,無論是在軟件修改,或是移植到新的運行環(huán)境的過程中。因此,所有的測試都必須在整個軟件系統(tǒng)的生命周期中進行維護。

經(jīng)常與單元測試聯(lián)系起來的另外一些開發(fā)活動包括代碼走讀(Code Review)、靜態(tài)分析(Static Analysis)和動態(tài)分析(Dynamic Analysis)。靜態(tài)分析就是對軟件的源代碼進行研讀,查找錯誤或收集一些度量數(shù)據(jù),并不需要對代碼進行編譯和執(zhí)行。動態(tài)分析就是通過觀察軟件運行時的動作,來提供執(zhí)行跟蹤、時間分析以及測試覆蓋度方面的信息。

2.單元測試的優(yōu)點

一種驗證行為。

程序中的每一項功能都是通過測試來驗證它的正確性。單元測試為以后的開發(fā)提供支援,就算是開發(fā)后期,也可以輕松地增加功能或更改程序結(jié)構(gòu),而不用擔心這個過程會破壞重要的東西,而且它為代碼的重構(gòu)提供了保障。這樣,我們就可以更自由地對程序進行改進。

一種設(shè)計行為。

編寫單元測試將使我們從調(diào)用者的角度觀察、思考。特別是先寫測試(test-first),迫使我們把程序設(shè)計成易于調(diào)用和可測試的,即解除軟件中的耦合。

一種編寫文檔的行為。

單元測試是一種無價的文檔,它是展示函數(shù)或類如何使用的最佳文檔。這份文檔是可編譯、可運行的,并且它保持最新,永遠與代碼同步。

具有回歸性。

自動化的單元測試避免了代碼出現(xiàn)回歸,編寫完成之后,可以隨時隨地地快速運行測試。

3.越到項目后期,單元測試為何越難進行

在很多項目的初期,項目中的大部分程序員都能夠自覺地去編寫單元測試。隨著項目的進行、任務(wù)的加重、離交付時間越來越近,不能按時完成項目的風險越來越大,單元測試就往往成為犧牲品。項目經(jīng)理因為進度的壓力也不重視了,程序員也因為編碼的壓力和無人看管而不再為代碼編寫單元測試了。筆者親身經(jīng)歷的項目都或多或少地發(fā)生過類似的事情。越是在項目的后期,能堅持編寫單元測試的程序在整個項目組中所占的項目比例越低。

為了追趕項目進度,多數(shù)程序員將沒有經(jīng)過任何測試的程序代碼上傳到版本控制系統(tǒng),項目經(jīng)理也不再追問,照單全收。這樣做的結(jié)果就是在項目后期,技術(shù)骨干人員只好加班加點進行系統(tǒng)集成。集成完之后,下發(fā)給測試人員測試時,Bug的報告數(shù)量翻倍增長。程序員開始修改Bug,但還有非常多的Bug隱藏得很深,一直潛伏到生產(chǎn)環(huán)境中。

總之,在現(xiàn)代軟件開發(fā)過程中,測試不再作為一個獨立的生命周期,單元測試成為與編寫代碼同步進行的開發(fā)活動。單元測試能夠提高程序員對程序的信心、保證程序的質(zhì)量、加快軟件開發(fā)速度,并使程序易于維護。沒有單元測試是絕對不行的。

4.NUnit單元測試工具的介紹與使用

(1)NUnit使用前介紹

NUnit是一個單元測試框架,是專門針對測試.NET開發(fā)的程序,同類產(chǎn)品還包括JUnit(Java)、CPPUnit(C++),都屬于xUnit中的成員。NUnit是xUnit家族中的第4個主打產(chǎn)品,完全由C#語言來編寫,目前NUnit的最新版本是NUnit 2.4.3,可以到https://www.nunit.org/網(wǎng)站下載。

下面正式講解Nunit。在講解之前先來看一下單元測試的運行效果,如圖1.28和圖1.29所示。


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號