国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

測(cè)試驅(qū)動(dòng)開(kāi)發(fā)在Java程序設(shè)計(jì)課程實(shí)驗(yàn)教學(xué)中的應(yīng)用

2023-09-13 11:48:06帥,劉
關(guān)鍵詞:開(kāi)發(fā)人員測(cè)試用例程序設(shè)計(jì)

王 帥,劉 磊

(淮北師范大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽 淮北 235000)

0 引言

Java程序設(shè)計(jì)課程教學(xué)能夠有效培養(yǎng)學(xué)生在計(jì)算機(jī)科學(xué)領(lǐng)域的核心編程能力和就業(yè)競(jìng)爭(zhēng)力[1]。Java作為一門(mén)廣泛應(yīng)用于企業(yè)級(jí)軟件開(kāi)發(fā)的編程語(yǔ)言,具有豐富的生態(tài)系統(tǒng)和強(qiáng)大的跨平臺(tái)特性,使得掌握J(rèn)ava編程技能成為當(dāng)今互聯(lián)網(wǎng)時(shí)代的必備技能之一[2]。通過(guò)Java課程的學(xué)習(xí),學(xué)生將深入理解面向?qū)ο缶幊趟枷?、掌握基本編程概念和技術(shù),學(xué)習(xí)如何構(gòu)建可擴(kuò)展、可維護(hù)和高性能的應(yīng)用程序[3]。同時(shí),Java課程還培養(yǎng)學(xué)生的問(wèn)題解決能力、團(tuán)隊(duì)合作能力和軟件開(kāi)發(fā)的實(shí)踐經(jīng)驗(yàn)[4],為學(xué)生在職業(yè)生涯中應(yīng)對(duì)各種挑戰(zhàn)和機(jī)遇奠定堅(jiān)實(shí)基礎(chǔ)。無(wú)論是從就業(yè)市場(chǎng)的需求角度,還是從個(gè)人技能成長(zhǎng)的角度來(lái)看,Java課程的學(xué)習(xí)具有重要的意義。

與其他編程語(yǔ)言相比,Java程序設(shè)計(jì)語(yǔ)言具有一些顯著的差異[5-7],從動(dòng)手能力培養(yǎng)和企業(yè)需求的角度來(lái)看,傳統(tǒng)Java程序設(shè)計(jì)課程實(shí)驗(yàn)教學(xué)存在一些問(wèn)題[8-11]。首先,傳統(tǒng)實(shí)驗(yàn)教學(xué)往往過(guò)于側(cè)重理論知識(shí)的傳授,缺乏充分的實(shí)踐環(huán)節(jié)。學(xué)生可能只是被要求編寫(xiě)一些簡(jiǎn)單的代碼片段或完成一些基本功能,而缺乏真實(shí)項(xiàng)目開(kāi)發(fā)的體驗(yàn)。這使得學(xué)生在實(shí)際應(yīng)用中缺乏動(dòng)手能力和實(shí)際問(wèn)題解決的經(jīng)驗(yàn)。其次,傳統(tǒng)實(shí)驗(yàn)教學(xué)往往缺乏與企業(yè)需求的銜接。在現(xiàn)實(shí)工作環(huán)境中,企業(yè)更加注重學(xué)生實(shí)際開(kāi)發(fā)能力和工作經(jīng)驗(yàn)。然而,傳統(tǒng)實(shí)驗(yàn)教學(xué)中的實(shí)驗(yàn)項(xiàng)目通常過(guò)于簡(jiǎn)單和理論化,無(wú)法滿足企業(yè)對(duì)學(xué)生實(shí)際要求。學(xué)生可能無(wú)法獲得在真實(shí)項(xiàng)目中開(kāi)發(fā)和協(xié)作所需的技能和經(jīng)驗(yàn),這在就業(yè)競(jìng)爭(zhēng)激烈的市場(chǎng)中可能對(duì)學(xué)生就業(yè)前景產(chǎn)生負(fù)面影響。此外,傳統(tǒng)實(shí)驗(yàn)教學(xué)中缺乏與實(shí)際開(kāi)發(fā)流程和工具的對(duì)接。在實(shí)際工作中,團(tuán)隊(duì)協(xié)作、版本控制、測(cè)試和部署等環(huán)節(jié)是非常重要的。然而,在傳統(tǒng)實(shí)驗(yàn)教學(xué)中,學(xué)生很少有機(jī)會(huì)接觸這些工具和流程,缺乏相關(guān)的實(shí)踐經(jīng)驗(yàn)。這使得學(xué)生在進(jìn)入職場(chǎng)后需要額外時(shí)間和精力去適應(yīng)實(shí)際開(kāi)發(fā)環(huán)境,增加學(xué)生的就業(yè)壓力。

測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(Test-Driven Development,TDD)作為一種敏捷開(kāi)發(fā)方法,強(qiáng)調(diào)在編寫(xiě)代碼之前先編寫(xiě)測(cè)試用例,然后逐步實(shí)現(xiàn)代碼以滿足測(cè)試要求。引入TDD可以強(qiáng)調(diào)測(cè)試的重要性,提高學(xué)生編寫(xiě)代碼質(zhì)量和測(cè)試技能。也能使學(xué)生更好理解代碼的設(shè)計(jì)和邏輯,培養(yǎng)其解決問(wèn)題和分析需求的能力。此外,TDD還可以幫助學(xué)生更好地理解和應(yīng)用面向?qū)ο缶幊淘瓌t,如單一職責(zé)原則和依賴(lài)倒置原則。通過(guò)引入TDD,學(xué)生可以提前思考并明確代碼的預(yù)期行為,加強(qiáng)對(duì)需求的理解和設(shè)計(jì)的思考,從而提高代碼的可靠性和可擴(kuò)展性。

針對(duì)傳統(tǒng)Java 實(shí)驗(yàn)教學(xué)存在一些不足之處,文章嘗試將測(cè)試驅(qū)動(dòng)開(kāi)發(fā)引入到Java 程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)中。

1 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)及其在實(shí)驗(yàn)教學(xué)中的作用

TDD 是一種軟件開(kāi)發(fā)方法論,其核心理念是在編寫(xiě)功能代碼之前先編寫(xiě)測(cè)試代碼[12-14]。通過(guò)TDD,開(kāi)發(fā)人員可通過(guò)明確的需求和預(yù)期行為來(lái)驅(qū)動(dòng)開(kāi)發(fā)過(guò)程,提高代碼質(zhì)量和可維護(hù)性。

TDD工作流程如圖1所示:首先,開(kāi)發(fā)人員根據(jù)需求編寫(xiě)一個(gè)測(cè)試用例,描述所期望的功能或行為。然后,開(kāi)發(fā)人員編寫(xiě)最小化代碼來(lái)滿足這個(gè)測(cè)試用例,使其通過(guò)測(cè)試。接下來(lái)進(jìn)行代碼重構(gòu),優(yōu)化代碼結(jié)構(gòu)和性能,同時(shí)確保測(cè)試仍然通過(guò)。這個(gè)過(guò)程不斷循環(huán),每次迭代都會(huì)增加新測(cè)試用例,逐步構(gòu)建出完備且可靠的代碼庫(kù)。

圖1 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)流程

通過(guò)TDD,開(kāi)發(fā)人員將重點(diǎn)放在測(cè)試上,強(qiáng)調(diào)代碼可測(cè)試性和可驗(yàn)證性。這有助于提前發(fā)現(xiàn)潛在問(wèn)題和錯(cuò)誤,降低在后期修復(fù)漏洞和缺陷所需的成本和工作量。TDD還促使開(kāi)發(fā)人員編寫(xiě)清晰、模塊化和可重用代碼,提高代碼可讀性和可維護(hù)性。

TDD的優(yōu)勢(shì)不僅在于提供高質(zhì)量代碼,還通過(guò)反饋機(jī)制增強(qiáng)開(kāi)發(fā)人員的自信。通過(guò)頻繁運(yùn)行測(cè)試,開(kāi)發(fā)人員可以快速獲得關(guān)于代碼功能正確性的反饋,及早發(fā)現(xiàn)和修復(fù)問(wèn)題。同時(shí),測(cè)試也成為代碼文檔的一部分,對(duì)代碼行為進(jìn)行清晰的定義和描述。

測(cè)試驅(qū)動(dòng)開(kāi)發(fā)是一種強(qiáng)調(diào)測(cè)試先行的軟件開(kāi)發(fā)方法,通過(guò)編寫(xiě)測(cè)試用例來(lái)驅(qū)動(dòng)功能代碼編寫(xiě)和優(yōu)化,提供一種系統(tǒng)化的方式來(lái)構(gòu)建高質(zhì)量、可維護(hù)的軟件,同時(shí)增強(qiáng)開(kāi)發(fā)人員的自信和代碼質(zhì)量意識(shí)。

2 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)在Java程序設(shè)計(jì)課程中應(yīng)用

利用TDD 的原則和方法,可以設(shè)計(jì)實(shí)驗(yàn)教學(xué)內(nèi)容,幫助學(xué)生在實(shí)踐中學(xué)習(xí)和應(yīng)用相關(guān)知識(shí)和技能[15-16]?;赥DD迭代式開(kāi)發(fā)特點(diǎn),設(shè)計(jì)如圖2所示的實(shí)驗(yàn)教學(xué)方法。

圖2 TDD在Java實(shí)驗(yàn)教學(xué)中的應(yīng)用

以下是將TDD應(yīng)用到Java程序設(shè)計(jì)課程實(shí)驗(yàn)教學(xué)中的步驟和建議。

2.1 根據(jù)Java程序設(shè)計(jì)課程大綱,確定實(shí)驗(yàn)?zāi)繕?biāo)

首先明確實(shí)驗(yàn)?zāi)繕?biāo)和學(xué)習(xí)要點(diǎn)。考慮學(xué)生通過(guò)實(shí)驗(yàn)需掌握的知識(shí)、技能和概念,這有助于定義實(shí)驗(yàn)范圍和內(nèi)容。

2.2 選擇適當(dāng)問(wèn)題或案例

選擇一個(gè)適合問(wèn)題或案例作為實(shí)驗(yàn)背景。確保問(wèn)題或案例能夠涵蓋實(shí)驗(yàn)?zāi)繕?biāo),并具有一定復(fù)雜性,以激發(fā)學(xué)生思考和探索。一個(gè)恰當(dāng)實(shí)驗(yàn)場(chǎng)景可以激發(fā)學(xué)生興趣,幫助學(xué)生應(yīng)用所學(xué)知識(shí)和技能,增加學(xué)生學(xué)習(xí)動(dòng)力和參與度。

2.3 定義測(cè)試用例

根據(jù)實(shí)驗(yàn)?zāi)繕?biāo)和問(wèn)題定義1組測(cè)試用例,以驗(yàn)證學(xué)生編寫(xiě)代碼正確性并測(cè)試其功能。測(cè)試用例應(yīng)具體、可測(cè)量,并覆蓋實(shí)驗(yàn)要求的各個(gè)方面。以下是一些指導(dǎo)原則用來(lái)定義測(cè)試用例。

1)圍繞實(shí)驗(yàn)?zāi)繕?biāo)和要求。仔細(xì)閱讀實(shí)驗(yàn)指導(dǎo)和需求文檔,確定需要的測(cè)試功能或模塊,基于實(shí)驗(yàn)?zāi)繕?biāo)和要求定義測(cè)試用例。

2)考慮邊界條件。測(cè)試用例應(yīng)該覆蓋各種可能邊界條件,例如,如果涉及到輸入范圍,應(yīng)包括最小值、最大值、邊界值等。

3)考慮異常情況。測(cè)試用例應(yīng)該包括對(duì)可能異常情況的測(cè)試,例如,輸入為空、輸入無(wú)效、操作失敗等情況。

4)考慮功能組合。如果實(shí)驗(yàn)涉及多個(gè)功能組合,測(cè)試用例應(yīng)覆蓋不同組合情況,以驗(yàn)證功能之間的交互性和正確性。

5)使用者的角度。測(cè)試用例應(yīng)該從最終用戶(hù)角度來(lái)定義,考慮用戶(hù)可能會(huì)遇到的使用場(chǎng)景和需求,編寫(xiě)相應(yīng)測(cè)試用例。

6)遵循測(cè)試金字塔原則。測(cè)試用例應(yīng)包括大量單元測(cè)試和集成測(cè)試,以及少量的端到端測(cè)試,確保測(cè)試用例層次結(jié)構(gòu)合理,覆蓋范圍適當(dāng)。

7)檢查代碼覆蓋率。確保測(cè)試用例能夠達(dá)到一定代碼覆蓋率,使用代碼覆蓋率工具,如JaCoCo,來(lái)分析測(cè)試覆蓋率,并根據(jù)結(jié)果補(bǔ)充缺失的測(cè)試用例。

8)反復(fù)迭代和更新。隨著實(shí)驗(yàn)進(jìn)行,不斷迭代和更新測(cè)試用例,根據(jù)發(fā)現(xiàn)的問(wèn)題、學(xué)生的反饋和改進(jìn)的代碼,及時(shí)更新測(cè)試用例以確保其有效性。

2.4 提供起始代碼和框架

為學(xué)生提供一個(gè)基礎(chǔ)起始代碼和框架,包含必要的類(lèi)、函數(shù)和接口等。這些代碼可以作為學(xué)生開(kāi)始編寫(xiě)測(cè)試用例和實(shí)現(xiàn)代碼的起點(diǎn)。鑒于實(shí)驗(yàn)教學(xué)課時(shí)有限,起始代碼和框架使得學(xué)生能夠?qū)W⒂趯?shí)驗(yàn)的核心目標(biāo),而不必從頭開(kāi)始構(gòu)建整個(gè)程序。通過(guò)這種方式,學(xué)生可以更快地理解問(wèn)題本質(zhì),并在指導(dǎo)下逐步完善代碼,實(shí)現(xiàn)所需功能。起始代碼和框架還可以幫助學(xué)生遵循良好編程實(shí)踐,如模塊化、封裝和代碼復(fù)用,使學(xué)生在編寫(xiě)代碼時(shí)養(yǎng)成良好習(xí)慣。

2.5 要求先編寫(xiě)測(cè)試用例

要求學(xué)生先編寫(xiě)測(cè)試用例來(lái)驗(yàn)證代碼。鼓勵(lì)學(xué)生思考并設(shè)計(jì)完善的測(cè)試用例,以覆蓋各種可能的情況和邊界條件。這種方法鼓勵(lì)學(xué)生從程序的使用者角度思考,明確代碼預(yù)期行為,并通過(guò)編寫(xiě)測(cè)試用例來(lái)驗(yàn)證代碼能否按照預(yù)期工作。此外,編寫(xiě)測(cè)試用例還能幫助學(xué)生提前發(fā)現(xiàn)和糾正代碼中的錯(cuò)誤,提高代碼的質(zhì)量和可靠性。通過(guò)這種反復(fù)迭代過(guò)程,學(xué)生可以逐步完善代碼,并對(duì)代碼的作用和行為有更全面的了解。

2.6 學(xué)生編寫(xiě)最小化代碼

要求學(xué)生只編寫(xiě)最小化代碼來(lái)使一個(gè)或多個(gè)測(cè)試用例通過(guò)。鼓勵(lì)學(xué)生保持代碼的簡(jiǎn)潔性和最小化,只關(guān)注目前正在實(shí)現(xiàn)的功能。通過(guò)這種方式,學(xué)生被迫將注意力集中在解決問(wèn)題的關(guān)鍵方面,而不是陷入過(guò)度設(shè)計(jì)或不必要的功能實(shí)現(xiàn)。通過(guò)解決一個(gè)或多個(gè)測(cè)試用例,學(xué)生能夠快速迭代和驗(yàn)證解決方案,并及時(shí)獲得反饋。這樣的實(shí)踐有助于學(xué)生逐步建立自信心,并逐漸增加解決問(wèn)題的能力。此外,只編寫(xiě)最小化代碼還有助于培養(yǎng)學(xué)生的模塊化思維,使學(xué)生能夠?qū)?wèn)題分解為更小的可管理部分,并逐步構(gòu)建起完整解決方案。

2.7 引導(dǎo)學(xué)生進(jìn)行迭代和重構(gòu)

在測(cè)試通過(guò)后,引導(dǎo)學(xué)生進(jìn)行代碼重構(gòu)和優(yōu)化,以提高代碼可讀性、可維護(hù)性和性能。學(xué)生可以使用更清晰、更一致的命名和注釋使代碼更易于理解,并通過(guò)減少冗余,提取可重用的部分來(lái)增強(qiáng)代碼可維護(hù)性。

2.8 提供反饋和評(píng)估

在學(xué)生完成實(shí)驗(yàn)后,提供反饋和評(píng)估,包括對(duì)編寫(xiě)測(cè)試用例和代碼質(zhì)量進(jìn)行評(píng)估,并給予相應(yīng)的建議和指導(dǎo)。

通過(guò)這樣的設(shè)計(jì),學(xué)生可以在實(shí)踐中深入了解測(cè)試驅(qū)動(dòng)開(kāi)發(fā)原則,同時(shí)學(xué)習(xí)和應(yīng)用相關(guān)知識(shí)和技能。實(shí)驗(yàn)教學(xué)內(nèi)容結(jié)合實(shí)際問(wèn)題和測(cè)試,激發(fā)學(xué)生學(xué)習(xí)興趣和動(dòng)力,同時(shí)培養(yǎng)學(xué)生問(wèn)題解決和軟件開(kāi)發(fā)能力。

3 實(shí)驗(yàn)案例分析

在基于測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的Java實(shí)驗(yàn)設(shè)計(jì)中,以計(jì)算器為例來(lái)說(shuō)明該方法的應(yīng)用。在這個(gè)實(shí)驗(yàn)中,學(xué)生將通過(guò)TDD步驟逐步開(kāi)發(fā)一個(gè)簡(jiǎn)單的計(jì)算器應(yīng)用程序。

首先,學(xué)生需要定義測(cè)試用例來(lái)描述計(jì)算器的不同功能和預(yù)期的輸出結(jié)果。例如,學(xué)生可以編寫(xiě)測(cè)試用例來(lái)驗(yàn)證加法、減法、乘法和除法等基本運(yùn)算的正確性,以及邊界情況的處理。每個(gè)測(cè)試用例應(yīng)包括輸入數(shù)據(jù)和預(yù)期輸出結(jié)果。接下來(lái),學(xué)生根據(jù)測(cè)試用例編寫(xiě)測(cè)試代碼。使用JUnit等測(cè)試框架來(lái)創(chuàng)建測(cè)試用例,并為每個(gè)測(cè)試用例編寫(xiě)對(duì)應(yīng)的測(cè)試方法。在測(cè)試方法中,學(xué)生需要編寫(xiě)代碼來(lái)調(diào)用計(jì)算器相應(yīng)功能,并與預(yù)期輸出結(jié)果進(jìn)行斷言比較,以判斷測(cè)試是否通過(guò)。

然后,學(xué)生根據(jù)測(cè)試代碼逐步實(shí)現(xiàn)計(jì)算器功能。在每個(gè)功能實(shí)現(xiàn)之前,應(yīng)該先運(yùn)行相關(guān)測(cè)試用例,以確保代碼功能正確。如果測(cè)試未通過(guò),學(xué)生需要修改代碼以滿足測(cè)試要求。通過(guò)不斷迭代測(cè)試、編碼和修復(fù)過(guò)程,學(xué)生逐步完善計(jì)算器應(yīng)用程序??梢酝ㄟ^(guò)添加新的測(cè)試用例來(lái)覆蓋更多場(chǎng)景和功能,并確保代碼正確性和健壯性。

最后,學(xué)生進(jìn)行整體測(cè)試和驗(yàn)證,確保計(jì)算器應(yīng)用程序在各種情況下都能正常工作。學(xué)生可以運(yùn)行全部測(cè)試用例,并查看測(cè)試報(bào)告來(lái)評(píng)估代碼覆蓋率和質(zhì)量。

4 教學(xué)效果

對(duì)2個(gè)平行班分別采用傳統(tǒng)實(shí)驗(yàn)教學(xué)模式和測(cè)試驅(qū)動(dòng)開(kāi)發(fā)實(shí)驗(yàn)教學(xué)模式以驗(yàn)證其教學(xué)效果。采用測(cè)試驅(qū)動(dòng)開(kāi)發(fā)實(shí)驗(yàn)教學(xué)模式能夠極大提高學(xué)生的實(shí)驗(yàn)積極性,較之傳統(tǒng)教學(xué)模式,學(xué)生主觀能動(dòng)性得到充分發(fā)揮,實(shí)驗(yàn)指導(dǎo)書(shū)規(guī)定的教學(xué)內(nèi)容完成率提高15%,達(dá)到100%,自主探索性實(shí)驗(yàn)內(nèi)容增加35%。實(shí)驗(yàn)活動(dòng)已從課上延伸到課下,學(xué)習(xí)態(tài)度從“老師讓我怎么做”轉(zhuǎn)變?yōu)椤拔乙趺醋觥薄F(tuán)隊(duì)合作意識(shí)也顯著增強(qiáng),協(xié)作式開(kāi)發(fā)占比提高30%,Java封裝以及模塊化開(kāi)發(fā)理論得到充分實(shí)踐。學(xué)生實(shí)驗(yàn)教學(xué)成績(jī)也得到大幅提高,如表1,采用新的教學(xué)方法后,優(yōu)良率從43.69%提高到63.07%。

表1 2種教學(xué)方式實(shí)驗(yàn)教學(xué)成績(jī)

5 結(jié)語(yǔ)

文章探討TDD在Java程序設(shè)計(jì)課程實(shí)驗(yàn)教學(xué)中的應(yīng)用。發(fā)現(xiàn)引入TDD方法對(duì)于提高學(xué)生的編程能力、代碼質(zhì)量和測(cè)試技能具有重要的積極影響。一方面新的實(shí)驗(yàn)教學(xué)模式將程序測(cè)試與程序開(kāi)發(fā)相融合,以測(cè)試促開(kāi)發(fā),規(guī)范開(kāi)發(fā)過(guò)程,將開(kāi)發(fā)過(guò)程中的不確定性降到最低,最大程度保證實(shí)驗(yàn)教學(xué)進(jìn)度和質(zhì)量。另一方面,能夠減少實(shí)驗(yàn)教學(xué)中對(duì)學(xué)生的約束、限制,極大提高實(shí)驗(yàn)過(guò)程的自由度,充分調(diào)動(dòng)學(xué)生學(xué)習(xí)積極性,引導(dǎo)學(xué)生發(fā)揮自身的創(chuàng)造力。另外,TDD不僅可用于Java程序設(shè)計(jì)課程的實(shí)驗(yàn)教學(xué)改革,也為其他程序設(shè)計(jì)類(lèi)課程的實(shí)驗(yàn)教學(xué)改革提供參考。

猜你喜歡
開(kāi)發(fā)人員測(cè)試用例程序設(shè)計(jì)
基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
電子制作(2019年9期)2019-05-30 09:42:04
基于混合遺傳算法的回歸測(cè)試用例集最小化研究
高職高專(zhuān)院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
讓W(xué)indows 10進(jìn)入開(kāi)發(fā)者模式
電腦迷(2015年12期)2015-04-29 23:22:51
PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
后悔了?教你隱藏開(kāi)發(fā)人員選項(xiàng)
基于依賴(lài)結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
德江县| 北川| 南城县| 日土县| 金堂县| 论坛| 长岛县| 三原县| 普陀区| 黑水县| 锡林郭勒盟| 津南区| 从江县| 丁青县| 松原市| 鲁山县| 广水市| 永吉县| 二手房| 阜新市| 松原市| 永宁县| 类乌齐县| 仁怀市| 徐闻县| 虎林市| 夹江县| 杭锦后旗| 嘉兴市| 乌恰县| 衡阳市| 娄烦县| 正阳县| 昆明市| 科尔| 平原县| 湾仔区| 平顶山市| 东方市| 广东省| 桦南县|